1. 程式人生 > >EFCore 【Sqlite、Mysql】資料庫遷移 並使用資料庫,CodeFirst、DBFirst

EFCore 【Sqlite、Mysql】資料庫遷移 並使用資料庫,CodeFirst、DBFirst

通過alt+v+e+o組合鍵來喚醒程式包管理器

通過在程式包管理器控制檯中輸入指令:

get-help about_entityframeworkcore 檢視EFCore的幫助文件。


EFCore CodeFirst

EFCore 使用Sqlite資料庫遷移的步驟:

第一步:安裝依賴nuget包:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Sqlite

Microsoft.EntityFrameworkCore.Tools

第二步:建立DbContext,並宣告DbSet

建立控制檯專案後,建立一個DbContext的子類,把需要建立的DbSet全部宣告,並重載OnConfiguring方法,使用UseSqlite()指定資料庫連結。

第三步:使用多個遷移相關指令生成資料庫

指令1:EntityFrameworkCore\Add-Migration mysqlte   來生成遷移檔案

指令2:EntityFrameworkCore\Update-Database mysqlte 來生成具體的資料庫,sqlite.db就是生成的資料庫檔案

mysqlte為自定義名稱

第四步:

使用生成的sqlite資料庫

右鍵sqlite.db並在生成操作上設定為,在複製到輸出目錄上設定屬性為始終複製,sqlite資料庫從一連線就會建立空的資料庫檔案,可以通過這個操作來覆蓋預設生成的檔案並使用。

EFCore 使用Mysql資料庫遷移的步驟:

第一步:下載需要的nuget包:

Microsoft.EntityFrameworkCore

Pomelo.EntityFrameworkCore.MySql

Microsoft.EntityFrameworkCore.Tools

第二步:建立DbContext

和sqlite一樣,但需要重新制定mysql的資料庫連結,

第三步:使用EF遷移相關的指令

指令1:EntityFrameworkCore\Add-Migration mysql

指令2:EntityFrameworkCore\Update-Database mysql

EFCore DBFirst,從資料庫中生成實體和DbContext到程式中。

輸入指令:

EntityFrameworkCore\Scaffold-DbContext "Data Source = localhost; Database = mydb; User ID = username; Password = mypwd; SslMode = None;" "Pomelo.EntityFrameworkCore.MySql"

第一坑

在建立資料庫時,有時候會需要一個建立時間欄位,且這個欄位預設是當前時間,在資料庫中定義好後,使用上述命令,生成實體到程式中時,在DbContext 的 OnModelCreating 過載方法中會出現生成不準確的問題,比如會在時間預設值左右加上單引號,導致資料庫再更新遷移到資料庫時建立表出錯,去掉單引號可解決這個問題,如下圖