添加引用
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools
- Pomelo.EntityFrameworkCore.MySql
創建實體對象
這里創建兩個實體對象,順便演示添加外鍵的效果
public class TUser { public int ID { get; set; } public string UserName { get; set; } public string Password { get; set; } public ICollection<TRole> TRoles { get; set; } }
public class TRole { public int ID { get; set; } public string Name { get; set; } }
生成數據表時,屬性“ID”默認成為自增的主鍵。
上述兩個實體對象生成的數據表中,TRole中會包含TUser的外鍵,默認命名為TUserID。
創建上下文對象
public class MyDbContext:DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public DbSet<TUser> Users { get; set; } public DbSet<TRole> Roles { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } }
將根據此文件生成數據庫,把想要生成數據表的實體類型以上面代碼的形式作為屬性MyDbContext為自定義的數據庫上下文名稱,由用戶自己起名。其他代碼可保持不變。
添加數據庫連接字符串
在appsettings.json中加入連接字符串(下方綠底部分):
{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "MyDbContext": "server=localhost;database=MyDb;user=myUsername;password=myPwd;" } }
localhost替換為你的mysql地址,MyDb為將要生成數據表的數據庫名稱,myUsername為mysql的用戶名,myPwd為mysql的密碼。
添加數據上下文服務
在StartUp類的ConfigureServices方法中添加如下代碼
services.AddDbContext<MyDbContext>(options => options.UseMySql(Configuration.GetConnectionString("MyDbContext")));
此代碼將上面我們編寫的MyDbContext這個類注冊為數據上下文的服務,后續可通過DI方便地調用。Configuration.GetConnectionString(string name)獲取appsettings.json中“ConnectionStrings”這部分中對應名稱的字符串。
生成數據庫
用vs2019的話,直接菜單欄“工具”-NuGet包管理器-程序包管理器控制台。
在打開的窗口中輸入如下兩個命令
- Add-Migration InitialCreate
- Update-Database
第一個命令會生成一個文件,記錄所有我們代碼編寫對數據庫的影響,生成的文件自動放入Migrations文件夾下,此文件夾也自動生成,第一個命令中的“Initial Create”用來命名此次數據庫操作,可自己起名。
第二個命令將會根據第一個命令生成的遷移文件對數據庫進行操作。
完成
此時,mysql數據庫中應該就可以看到TUser和TRole兩個數據表了。