日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...

發(fā)布時(shí)間:2024/9/15 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

dotnet core 2.0 發(fā)布已經(jīng)好幾天了,期間也把原來(lái) dotnet core 1.1 的 MVC 項(xiàng)目升級(jí)到了 2.0,升級(jí)過(guò)程還是比較順利的,變動(dòng)也不是太多。升級(jí)的過(guò)程中也少不了 Entity Framwork Core 的升級(jí),在這篇文章中主要介紹下 MySql 數(shù)據(jù)庫(kù)使用?Entity Framwork Core 2.0 如何進(jìn)行 Code First、Database First 及數(shù)據(jù)庫(kù)遷移(Migration),雖然比較基礎(chǔ),但是做到盡量詳細(xì)。本文所有示例代碼已經(jīng)提交到 GitHub:https://github.com/starts2000/EFCoreDemo,如果覺(jué)得對(duì)你有幫助,就給個(gè)?Star 吧。

一、工具及環(huán)境

Visual Studio 2017 15.3

.NET CORE 2.0 SDK

二、Entity Framwork Core 2.0?MySql?Code First 及?數(shù)據(jù)庫(kù)遷移(Migration)

1、創(chuàng)建 .NET Core 類庫(kù)項(xiàng)目 【Starts2000.EFCoreCodeFirst】

2、添加 User 實(shí)體類

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】項(xiàng)目結(jié)構(gòu)如下:

3、創(chuàng)建?.NET Core 控制臺(tái)應(yīng)用項(xiàng)目 【Starts2000.EFCoreCodeFirst.Test】

添加對(duì)?【Starts2000.EFCoreCodeFirst】項(xiàng)目的引用;

Nuget 添加?Microsoft.EntityFrameworkCore.Tools 及?Pomelo.EntityFrameworkCore.MySql(注意勾上:包括預(yù)發(fā)行版) 的引用;

4、編輯?Starts2000.EFCoreCodeFirst.Test.csproj 項(xiàng)目文件,添加如下內(nèi)容:

最終內(nèi)容如下:

netcoreapp2.0

Exe

5、添加?TestDbContext?類(注意:把數(shù)據(jù)庫(kù)連接字符串修改為自己的)

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】項(xiàng)目文件夾目錄,執(zhí)行如下命令:

dotnet ef migrations add InitialCreate

如果命令執(zhí)行成功,可以看到項(xiàng)目目錄中新增了如下內(nèi)容:

7、執(zhí)行?dotnet ef database update 命令

執(zhí)行成功后,可以看到數(shù)據(jù)庫(kù)及表創(chuàng)建成功。

8、修改實(shí)體,并把修改的內(nèi)容更新到數(shù)據(jù)庫(kù)

User 類的 Account 屬性對(duì)應(yīng) User 表的 Account 列應(yīng)該是唯一的,前面忘記了設(shè)置唯一索引,現(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í)行成功,可以看到項(xiàng)目目錄中新增了如下內(nèi)容:

接著按照 步驟7 的操作,如果成功,可以看到 User 表已經(jīng)創(chuàng)建了 Account 的唯一索引:

9、測(cè)試數(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】項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目,編譯運(yùn)行:

三、Entity Framwork Core 2.0?MySql?Database First

1、新建 【Starts2000.EFCoreDbFirst】 項(xiàng)目

2、Nuget 添加 Pomelo.EntityFrameworkCore.MySql(注意勾上:包括預(yù)發(fā)行版) 的引用;

3、編輯?Starts2000.EFCoreDbFirst.csproj 項(xiàng)目文件,添加如下內(nèi)容:

最終內(nèi)容如下:

netcoreapp2.0

4、打開命令行窗口,切換到 【Starts2000.EFCoreDbFirst】項(xiàng)目文件夾目錄,執(zhí)行如下命令:

dotnet ef dbcontext scaffold"Server=localhost;User Id=test;Password=123456;Database=TestDb" "Pomelo.EntityFrameworkCore.MySql"

執(zhí)行成功后,項(xiàng)目增加了如下內(nèi)容:

5、創(chuàng)建?.NET Core 控制臺(tái)應(yīng)用項(xiàng)目 【Starts2000.EFDbFirst.Test】進(jìn)行測(cè)試

添加對(duì)?【Starts2000.EFCoreDbFirst】項(xiàng)目的引用;

把 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】項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目,編譯運(yùn)行:

參考文章:

總結(jié)

以上是生活随笔為你收集整理的migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。