efcore mysql數據庫codefirst生成


添加引用

  • 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兩個數據表了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM