要在EF Core使用DB First首先要下載三個Nuget包,在Nuget的Package Manager Console窗口中依次敲入下面三個命令即可:
Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer.Design
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
當然你也可以用圖形化的Nuget包管理器來下載這三個程序包。
之后在Package Manager Console中敲入如下命令,即可在項目中生成數據庫各個表的相應Entity和DbContext:
Scaffold-DbContext "Server=localhost;User Id=sa;Password=1qaz!QAZ;Database=TestDB" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities -f
其中-OutputDir 可以聲明在項目的某個文件夾路徑下生成所有實體,上例中我們就將所有數據庫實體生成到了Entities這個文件夾下,-f參數表示如果以前已經生成過實體文件了,那么就強制覆蓋以前生成的文件,如果不用-f參數,在-OutputDir的路徑下如果有同名的實體文件那么上面的命令會報錯,導致生成失敗。
另外也可以用-t參數來聲明,只生成數據庫中一張表的實體:
Scaffold-DbContext "<ConnectionString>" Microsoft.EntityFrameworkCore.SqlServer -t <tablename> -f
還可以使用-Context參數來聲明生成DbContext類的名字,-Schemas參數來聲明只為某些SCHEMA下的數據庫對象(表、視圖等)生成實體類,如下所示:
Scaffold-DbContext "Server=localhost;User Id=sa;Password=1qaz!QAZ;Database=TestDB" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities -f -Context MyDbContext -Schemas "dbo","RAW","src"
可以參考:To handle multiple schemas in one DBContext
Scaffold-DbContext命令的所有參數解釋可以參考這里