migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...
dotnet core 2.0 發(fā)布已經好幾天了,期間也把原來 dotnet core 1.1 的 MVC 項目升級到了 2.0,升級過程還是比較順利的,變動也不是太多。升級的過程中也少不了 Entity Framwork Core 的升級,在這篇文章中主要介紹下 MySql 數(shù)據(jù)庫使用?Entity Framwork Core 2.0 如何進行 Code First、Database First 及數(shù)據(jù)庫遷移(Migration),雖然比較基礎,但是做到盡量詳細。本文所有示例代碼已經提交到 GitHub:https://github.com/starts2000/EFCoreDemo,如果覺得對你有幫助,就給個?Star 吧。
一、工具及環(huán)境
Visual Studio 2017 15.3
.NET CORE 2.0 SDK
二、Entity Framwork Core 2.0?MySql?Code First 及?數(shù)據(jù)庫遷移(Migration)
1、創(chuàng)建 .NET Core 類庫項目 【Starts2000.EFCoreCodeFirst】
2、添加 User 實體類
public classUser
{public int Id { get; set; }
[MaxLength(32), Required]public string Aaccount { get; set; }
[MaxLength(32), Required]public string Password { get; set; }
}
最終【Starts2000.EFCoreCodeFirst】項目結構如下:
3、創(chuàng)建?.NET Core 控制臺應用項目 【Starts2000.EFCoreCodeFirst.Test】
添加對?【Starts2000.EFCoreCodeFirst】項目的引用;
Nuget 添加?Microsoft.EntityFrameworkCore.Tools 及?Pomelo.EntityFrameworkCore.MySql(注意勾上:包括預發(fā)行版) 的引用;
4、編輯?Starts2000.EFCoreCodeFirst.Test.csproj 項目文件,添加如下內容:
最終內容如下:
netcoreapp2.0
Exe
5、添加?TestDbContext?類(注意:把數(shù)據(jù)庫連接字符串修改為自己的)
public classTestDbContext : DbContext
{public DbSet User { get; set; }protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("server=localhost;database=TestDb;user=test;password=123456;");
}protected override voidOnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);//modelBuilder.Entity().HasIndex(u => u.Aaccount).IsUnique();
}
}
6、打開命令行窗口,切換到 【Starts2000.EFCoreCodeFirst.Test】項目文件夾目錄,執(zhí)行如下命令:
dotnet ef migrations add InitialCreate
如果命令執(zhí)行成功,可以看到項目目錄中新增了如下內容:
7、執(zhí)行?dotnet ef database update 命令
執(zhí)行成功后,可以看到數(shù)據(jù)庫及表創(chuàng)建成功。
8、修改實體,并把修改的內容更新到數(shù)據(jù)庫
User 類的 Account 屬性對應 User 表的 Account 列應該是唯一的,前面忘記了設置唯一索引,現(xiàn)在在?TestDbContext?中加上:
public classTestDbContext : DbContext
{public DbSet User { get; set; }protected override voidOnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("server=localhost;database=TestDb;user=test;password=123456;");
}protected override voidOnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);
modelBuilder.Entity().HasIndex(u =>u.Aaccount).IsUnique();
}
}
執(zhí)行?dotnet ef migrations add?UserTableUpdateAccount?命令:
如果命令執(zhí)行成功,可以看到項目目錄中新增了如下內容:
接著按照 步驟7 的操作,如果成功,可以看到 User 表已經創(chuàng)建了 Account 的唯一索引:
9、測試數(shù)據(jù)寫入和讀取
在 Main 函數(shù)中添加如下代碼:
static void Main(string[] args)
{using(var context = newTestDbContext())
{
context.User.Add(newModels.User
{
Aaccount= "CodeFirst-Test-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Password= "123456"});
context.SaveChanges();
Console.WriteLine(context.User
.OrderByDescending(u=>u.Id)
.FirstOrDefault()?.Aaccount);
}
Console.ReadKey();
}
把【Starts2000.EFCoreCodeFirst.Test】項目設置為啟動項目,編譯運行:
三、Entity Framwork Core 2.0?MySql?Database First
1、新建 【Starts2000.EFCoreDbFirst】 項目
2、Nuget 添加 Pomelo.EntityFrameworkCore.MySql(注意勾上:包括預發(fā)行版) 的引用;
3、編輯?Starts2000.EFCoreDbFirst.csproj 項目文件,添加如下內容:
最終內容如下:
netcoreapp2.0
4、打開命令行窗口,切換到 【Starts2000.EFCoreDbFirst】項目文件夾目錄,執(zhí)行如下命令:
dotnet ef dbcontext scaffold"Server=localhost;User Id=test;Password=123456;Database=TestDb" "Pomelo.EntityFrameworkCore.MySql"
執(zhí)行成功后,項目增加了如下內容:
5、創(chuàng)建?.NET Core 控制臺應用項目 【Starts2000.EFDbFirst.Test】進行測試
添加對?【Starts2000.EFCoreDbFirst】項目的引用;
把 Main?函數(shù)修改為如下代碼:
static void Main(string[] args)
{using (var context = newTestDbContext())
{
context.User.Add(newUser
{
Aaccount= "DbFirst-Test-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Password= "123456"});
context.SaveChanges();
Console.WriteLine(context.User
.OrderByDescending(u=>u.Id)
.FirstOrDefault()?.Aaccount);
}
Console.ReadKey();
}
把【Starts2000.EFCoreDbFirst.Test】項目設置為啟動項目,編譯運行:
參考文章:
總結
以上是生活随笔為你收集整理的migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 删除顺序_mysql 添加字
- 下一篇: mysql文字字符集_MySQL字符集