缘起:开拓的时候要求在该地和服务器配置区别的数据库连接,当地开垦条件连接的是本土数据库,服务器连接的是生育意况数据库。那是在品种花销中很普及的意况。没悟出,在visual
studio.net(二〇一四版)中踩了一个超级大的坑。

设置了VS二〇一〇的人估摸都比较脑仁疼那么些MVC1.0的类型不也许再MVC2.0中间张开。终归网络海南大学学部分例子依然1.0的。

ASP.NET
Boilerplate(简单称谓ABP)是在.Net平台下二个很盛行的DDD框架,该框架已经为大家提供了汪洋的函数,特别便利与搭建公司应用。

第后生可畏从英特网找到了各自设置的方法,在Web.Debug.config中插入

倒车方法1:

关于那些框架的牵线本身就相当的少说,风乐趣的能够敬仰官方文书档案:

   <system.data xdt:Transform="InsertIfMissing">
        <DbProviderFactories>
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
    </system.data>
    <connectionStrings>
        <add name="BlogDBContext" connectionString="User Id=root;host=localhost;Database=bcblog1;password=;port=3306;persist security info=True;character set=utf8;" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
        <add name="ApplicationServices" connectionString="User Id=root;host=localhost;Database=bcblog1;password=;port=3306;persist security info=True;character set=utf8;" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>

微软官方网站推荐的。

运用ABP+EF+SQL
Server是比较推荐的构成,然而既然大家采纳的是EF,那么就应有是和数据库抽离的,也就代表我们应有能够选择任何的数据库,比方MySQL。

在Web.Release.config中插入

a. 备份你须要转接的种类文件。

ABP最初化的门类模板还提供了Module
Zero项目,为大家提供了客商、角色、权限等等通用功效,可是在应用开端化的沙盘模拟经营连接MySQL却会报错,无法运维,下边小编来减轻ABP+MySQL的难点。那是操作步骤:

   <system.data xdt:Transform="Remove" />
    <connectionStrings>
        <add name="BlogDBContext" connectionString="User Id=user_blog1;host=47.89.54.39;Database=bcblog1;password=88888888;port=3306;persist security info=True;character set=utf8;" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
        <add name="ApplicationServices" connectionString="User Id=user_blog1;host=47.89.54.39;Database=bcblog1;password=88888888;port=3306;persist security info=True;character set=utf8;" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>

b.使用记事本张开须求转接的工程文件即:.vbproj或然是csproj,然后找到ProjectTypeGuid这些节点,把 {603c0e0b-db56-11dc-be95-000d561079b0}替换为{F85E285D-BoraE0-4152-9332-AB1D724D3325}。然后保留文件。

1.从官网下载ABP项目模板,并解压到本地,用VS张开,这里我们新建贰个类型ConnectMySql。

不容置疑如此难点应有消除了,但一直不起效用,那是微软的东西最令人愤怒的地点:出了难点一直找不到原因在何地,只好怪本人的人品难点或祈求神灵保佑。

c.张开那一个类型的Web.config文件,查找’System.Web.Mvc,Version=1.0.0.0’并替换它们为’System.Web.Mvc,
Version=2.0.0.0’。保存你的陈设文件。

2.设置XXX.Web为运行项目,Build那么些Solution,使得NuGet下载相关的包。

经验了多少个钟头的气愤、绝望、仇恨、万般无奈。。。在国外网址中找到了消除办法:

d.使用Visual
Studio展开项目,然后在’援引’中倒找System.Web.Mvc,删除掉;认为它是1.0版本,大家删掉后,再把新的2.0本子的System.Web.Mvc加多到援用中来。

3.预备好一个SQL
Server数据库,纠正Web.config数据库的ConnectionString,连选拔SQL
Server数据库。

校订项目标陈设文件,比方XXX.csproj或XXX.vbproj(csproj或vbproj决议于你使用的语言是C#澳门新葡萄京官网首页,抑或VB.NET),把最终的注明掉的BeforeBuild和AfterBuild部分打消注释,校订为:

5.展开web.config文件然后在configuration节点部分增加如下一些(也能够不增加,笔者试过了卡塔尔国

4.开垦Package Manager
Console窗口,选拔XXX.EntityFramework为暗许项目,运营Update-Database命令,系统会在SQL
Server中创制数据库和呼应的表。

  <Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
  </Target>
  <Target Name="AfterBuild">
  </Target>

 

澳门新葡萄京官网首页 1

那是微软犯的荒诞,二个小bug浪费了广大人多少个小时以至几天的人命。

澳门新葡萄京官网首页 2澳门新葡萄京官网首页 3代码

5.开荒SSMS,连接收上一步新建的数据库,选拔生成脚本命令,并在高等选项中甄选“Schema
and data”生成四个成立表和填充数据的台本文件。

最后,微软的东西照旧不错的,人性化、易用,正是不时犯起神经来令人无可奈何。

 <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
         <assemblyIdentity name="System.Web.Mvc"

   publicKeyToken="31bf3856ad364e35"/>
         <bindingRedirect oldVersion="1.0.0.0"
   newVersion="2.0.0.0"/>
       </dependentAssembly>
     </assemblyBinding>
   </runtime>

6.接下来正是相比麻烦的SQL
Server脚本转MySQL脚本了,小编利用NotePad++,做了反复的批量轮流,把剧本调换来MySQL支持的源委。

 

为了便利大家,作者直接把调换好的SQL脚本放出,大家平昔运转就可以。
剧本下载

 

7.开采MySQL Server,新建一个MySQL数据库,并运营前一步骤希图好的本子。

接下来编写翻译一下就OK了。

8.我们回来VS,为XXX.EntityFramework和XXX.Web,通过Nuget加多MySql.Data.Entity:

 

澳门新葡萄京官网首页 4

第三个主意是使用多个工具来机关转接:

9.开垦Web项目标Web.config,由于上一步增多了MySql.Data.Entity,所以Web.config已经加多了MySql的相干陈设。大家只须要纠正连接字符串,注释掉SQL
Server的字符串,加多新的连接字符串:

澳门新葡萄京官网首页 5

<add name=”Default” providerName=”MySql.Data.MySqlClient”
connectionString=”server=localhost;port=3306;database=test;uid=root;password=xxx”
/>

 

10.展开EntityFramework项指标Configuration对象,在Migrations文件夹中,修正布局函数,钦点使用MySQL的SQL生成器。

你能够到这里下载那一个工具:MvcAppConverter-MVC2RTM.zip (255
KB).

public Configuration()
       {
           AutomaticMigrationsEnabled = false;
           ContextKey = “ConnectMySql”;
          SetSqlGenerator(“MySql.Data.MySqlClient”, new
MySql.Data.Entity.MySqlMigrationSqlGenerator());
       }

 

11.现行反革命大家来试风流倜傥试是或不是能够本着MySQL使用EF的Code
First。大家在XXX.Core中创建三个测验用的实体Student:

public class Student:Entity
  {
      [StringLength(50)]
      public string Name { get; set; }
      public DateTime Birthdate { get; set; }

      public bool Gender { get; set; }
  }

12.在XXX.EntityFramework中找到ConnectMySqlDbContext,并添加Student的应用:

public class ConnectMySqlDbContext : AbpZeroDbContext<Tenant, Role,
User>
{
     //TODO: Define an IDbSet for your Entities…
     public IDbSet<Student> Students { get; set; }
     /* NOTE:
      *   Setting “Default” to base class helps us when working
migration commands on Package Manager Console.
      *   But it may cause problems when working Migrate.exe of EF. If
you will apply migrations on command line, do not
      *   pass connection string name to base classes. ABP works either
way.
      */
     public ConnectMySqlDbContext()
         : base(“Default”)
     {

     }

……

13.我们编写翻译一下以此Solution,然后在Package Manager
Console窗口中,输入命令Add-Migration
AddStudent,这里的AddStudent是对大家此番改动的三个发令。命令运转成功后,在Migrations文件夹中,会创设进级数据库的C#代码。

澳门新葡萄京官网首页 6

14.持续在Package Manager
Console窗口中,输入命令Update-Database,系统会将数据库修改应用到大家的MySQL数据库中。

澳门新葡萄京官网首页 7

15.大家到MySQL数据库中,刷新,能够看看系统自动创设了Students数据库:

澳门新葡萄京官网首页 8

16.末段,大家Build整个Solution,运转网站,能够看出大家网址平常运行了。