[ C# 開發隨筆 ] ASP.NET Core 3.0 自學筆記第一張 Entity Framework Core ( DB First)

.Net Core 已經出到 3.1 了

目前為止有稍微碰過一些,但遇到 EF 的部分一直都沒有認真去研究,

在寫.Net Framework 的時候,EF 6.0 只要輕鬆的用滑鼠點一點,就可以把 EDMX 建起來。

什麼 Context 什麼 DbConnection 我才不管呢~ (被養壞了)

但在.Net Core 這方面就稍微微微的硬派了一點,要下指令呢。

首先,先安裝 Nuget 套件 如下:

打開[套件管理器主控台]

輸入下列指令,將資料庫結構建立至指定路徑下:

Scaffold-DbContext 
-Connection "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" 
Microsoft.EntityFrameworkCore.SqlServer 
-OutputDir Models 
-context BloggingContext 
-Project FirstWeb

其中 OutputDir 是要將自動生成的 Model 放在哪一個路徑下

下面是範例將192.168.100.01的遠端資料庫 TestDB 加入的指令

Scaffold-DbContext "Data Source=192.168.100.01;Initial Catalog=TestDB;User ID=Test;Password=***********" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\Entities

跑完之後會出現下列訊息

然後所有的Table都會建立一個 cs 檔在指定的路徑下方,並建立一個繼承 DbContext 的 TestDbContext .

若要更新資料結構則在跑一次同樣語法,後面加上 -Force

Scaffold-DbContext "Data Source=192.168.100.01;Initial Catalog=TestDB;User ID=test;Password=********" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\Entities -Force

 若是要更新指定資料表,則加入-Table tableName

Scaffold-DbContext "Data Source=192.168.100.01;Initial Catalog=TestDB;User ID=test;Password=********" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\Entities -Tables Member -Force

接著要去Startup.cs 去設定連線,有點類似於 Net Framework 的 WebCongig 設定資料庫連線

public void ConfigureServices(IServiceCollection services)
{
     services.AddControllersWithViews();

     var connection = "Data Source=192.168.100.01;Initial Catalog=TestDB;User ID=Test;Password=********"; 
     services.AddDbContext<TestDBContext>(options => options.UseSqlServer(connection));
}

接著就可以去使用資料庫了

--- 

參考:http://ikevin.tw/2019/08/04/asp-net-core-3-0-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-database-first/

如有指正之處,歡迎隨時提出