Entity Core Database First

關於這方面網路上文件說真的也不少,但是也不少都是國外的,對於英文很差記憶力又不好的我實在很傷腦筋,趕緊來記錄一下自己的步驟。

【開發工具】
Visual Studio Community 2017

步驟一
開啟VS 2017,建立.Net Core Project。

步驟二
由於沒有要測試其他東西因此直接使用空白的專案即可。

步驟三
在專案下建立新的資料夾命名為Models(可以自訂其他名稱),此資料夾將用來放置Enitiy的Class跟Context。

步驟四
叫出套件管理器主控台,位置在上方工具列『工具』>『Nuget封裝管理員』>『套件管理器主控台』。

步驟五
在套件管理器主控台內輸入以下內容,按下Enter鍵讓他跑一下。註:目標路徑以這個案例來說就是Models

 Scaffold-DbContext "Server=伺服器名稱;Database=資料庫名稱;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 目標路徑

<注意>可能會遇到PowerShell版本過舊問題,請更新到3.0以上。 >>>微軟更新<<<

步驟六
等他跑完了以後就可以看到Models內已經建好Class了,其中會有個Class檔案名稱為「資料庫名稱Context.cs」將其打開。

步驟七
複製OnConfiguring(DbContextOptionsBuilder optionsBuilder)這個方法內的連線字串,等等要用在Startup.cs內,然後再刪除OnConfiguring方法,並寫上建構子。

public FinanceDBContext(DbContextOptions<FinanceDBContext> options) : base(options)
{ }

步驟八
打開專案底下Startup.cs。
上方加上Using

using Microsoft.EntityFrameworkCore;
using EntityCoreTest2.Models;

在ConfigureServices(IServiceCollection services)方法內加上

string connectionString = @"剛剛複製的連線字串";
services.AddDbContext<FinanceDBContext>(options => options.UseSqlServer(connectionString));

以上步驟做完就大功告成了。

11/23補充:

更新Entity也是要用語法去執行,跟建立Entity時一樣在套件管理器主控台內輸入,語法也是相同的只是最後加上-f。

Scaffold-DbContext "Server=伺服器名稱;Database=資料庫名稱;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 目標路徑 -f

另外也附上必須用使用者登入的連線字串。

Scaffold-DbContext "Server=伺服器名稱;Database=資料庫名稱;User Id=使用者;Password=密碼;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 目標路徑

在連線字串中如有特殊字元(最常出現在密碼的部分)請在特殊字元前後加上『`』(鍵盤左邊Tab鍵上方的那個按鍵),如下面例子。

Scaffold-DbContext "Server=127.0.0.1;Database=DemoDB;User Id=sa;Password=aa`$$`bb;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

參考網頁
Getting Started with Entity Framework Core: Database-First Development
ASP.NET Core Application to Existing Database (Database First)