ABP .Net Core Entity Framework遷移使用MySql數據庫

1、遷移說明html

ABP模板項目Entity Framework Core默認使用的是Sql Server,也很容易將數據庫遷移到MySQL,步驟以下。web

2、遷移MySQL步驟數據庫

一、 下載項目json

請到 http://aspnetboilerplate.com/Templates 下載一個新的項目,選擇ASP.NET Core 2.x標籤,Target Framework:選中.Net Core就能夠了。app

二、 移除默認SQL Server相關包框架

在EntityFrameworkCore項目下移除包Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Designui

 640?wx_fmt=png&wxfrom=5&wx_lazy=1

三、  添加MySql程序包spa

 添加程序包Pomelo.EntityFrameworkCore.MySql、Pomelo.EntityFrameworkCore.MySql.Designcode

 640?wx_fmt=png&wxfrom=5&wx_lazy=1

四、  修改源代碼htm

修改DbContextConfigurer

public static class AbpBasicDbContextConfigurer

{

        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, string connectionString)

        {

            //builder.UseSqlServer(connectionString);

            builder.UseMySql(connectionString);

        }

 

        public static void Configure(DbContextOptionsBuilder<AbpBasicDbContext> builder, DbConnection connection)

        {

            //builder.UseSqlServer(connection);

            builder.UseMySql(connection);

        }

}

0?wx_fmt=png

 

五、  修改數據庫連接字符串

在web項目配置文件appsettings.json

1
2
3
4
"ConnectionStrings": {
     //"Default": "Server=localhost; Database=AbpBasicDb; Trusted_Connection=True;"
     "Default": "Server=localhost; port=3306; Database=AbpBasicDb; uid=root; pwd=****; Convert Zero Datetime=True"
}

 0?wx_fmt=png

六、  數據遷移

從新生成遷移文件

在下載啓動模板的時候,若是你選擇了包含 Module Zero。這裏會有一些遷移文件會包含在你的項目中,可是這些文件是爲Sql Server遷移使用的。請打開 .EntityFramework 項目中的Migrations文件夾,而後刪除這些遷移文件。遷移文件是以時間戳開始的。遷移文件的名字像這樣:201506210746108_AbpZero_Initial。

0?wx_fmt=png

在刪除全部的遷移文件後,選擇你的 .Web 項目爲開始項目,打開VS的包管理控制檯,並在包管理控制檯中選擇 .EntityFramework 項目做爲默認項目。而後在控制檯中執行下面命令:

Add-Migration "AbpZero_Initial"

0?wx_fmt=png

如今你可使用下面命令來建立數據庫:

Update-Database

0?wx_fmt=png

全部的事情都已完成,檢查 MySQL數據庫已生產成功

 0?wx_fmt=png

七、  完成MySQL遷移後運行瀏覽成功

 0?wx_fmt=png

原文地址:https://www.cnblogs.com/donaldtdz/p/8149598.html

-------------------------------------------------------------------------------------------------------------------------------

使用ABP框架進行First Code時,出現錯誤以下:

Your startup project 'HHTime.Core' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

 

出錯緣由是由於啓動項沒有選擇Migrator,默認啓動項是core,修改啓動項爲Project.Migrator便可

---------------------------------------------------------------------------------------------------------------------------------------

System.MissingMethodException: Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.
at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlCommandBuilder..ctor(IDiagnosticsLogger`1 logger, IRelationalTypeMapper typeMapper)
at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlCommandBuilderFactory.CreateCore(IDiagnosticsLogger`1 logger, IRelationalTypeMapper relationalTypeMapper)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommandListBuilder..ctor(IRelationalCommandBuilderFactory commandBuilderFactory)
at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model)
at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlDatabaseCreator.Create()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.

 

解決方案:

 編輯項目.csproj文件,在<ItemGroup>配置加入

<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.1.0-rc1-final" />

相關文章
相關標籤/搜索