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

歡迎訪問 生活随笔!

生活随笔

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

数据库

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

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

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

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

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

public class User{ ? ? ?
?
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)容:

<ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup>

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

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework><ApplicationIcon /><OutputType>Exe</OutputType><StartupObject /></PropertyGroup><ItemGroup><ProjectReference Include="..\Starts2000.EFCoreCodeFirst\Starts2000.EFCoreCodeFirst.csproj" /></ItemGroup><ItemGroup><PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" /><PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10058" /></ItemGroup><ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup></Project>


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


public class TestDbContext : DbContext{ ? ? ?
?
public DbSet<User> User { get; set; } ? ? ?

?
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql( ? ? ? ? ? ? ? ?"server=localhost;database=TestDb;user=test;password=123456;");} ? ? ? ?

protected override void OnModelCreating(ModelBuilder modelBuilder){ ? ? ? ? ?
?
base.OnModelCreating(modelBuilder); ? ? ? ? ? ?//modelBuilder.Entity<User>().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ù)庫及表創(chuàng)建成功。

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

?User 類的 Account 屬性對(duì)應(yīng) User 表的 Account 列應(yīng)該是唯一的,前面忘記了設(shè)置唯一索引,現(xiàn)在在?TestDbContext?中加上:

public class TestDbContext : DbContext{ ? ? ?
?
public DbSet<User> User { get; set; } ? ?

? ?
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql( ? ? ? ? ? ? ? ?"server=localhost;database=TestDb;user=test;password=123456;");} ? ? ? ?

protected override void OnModelCreating(ModelBuilder modelBuilder){ ? ? ? ? ?
?
base.OnModelCreating(modelBuilder); ? ? ? ? ? ?modelBuilder.Entity<User>().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 = new TestDbContext()){context.User.Add(new Models.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)容:

<ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup>

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


<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10057" /></ItemGroup><ItemGroup><DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /></ItemGroup></Project>


?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 = new TestDbContext()){context.User.Add(new User{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)行:

?

參考文章:

  • https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

  • https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

  • 相關(guān)文章:?

    • .NET Core 2.0 正式發(fā)布信息匯總

    • .NET Standard 2.0 特性介紹和使用指南

    • .NET Core 2.0 的dll實(shí)時(shí)更新、https、依賴包變更問題及解決

    • .NET Core 2.0 特性介紹和使用指南

    • Entity Framework Core 2.0 新特性

    • 體驗(yàn) PHP under .NET Core

    • .NET Core 2.0使用NLog

    • 升級(jí)項(xiàng)目到.NET Core 2.0,在Linux上安裝Docker,并成功部署

    • 解決Visual Studio For Mac Restore失敗的問題

    • ASP.NET Core 2.0 特性介紹和使用指南

    原文地址:http://www.cnblogs.com/Starts_2000/p/mysql-efcore20-codefirst-dbfirst-migration-demo.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

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

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