雖然知道 Database First 被移除很久了,但目前專案還是主要使用資料庫為主,所以一直沒有機會使用。
但 Core 至少還是有提供 Scaffold-DbContext 可以使用 :
安裝 Microsoft.EntityFrameworkCore.SqlServer
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_13-51-45_045256-1024x323.png)
到 Domain 裡面把 Word Class 刪除,建立 EFModels 資料夾
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_13-41-02_100975.png)
安裝 Microsoft.EntityFrameworkCore.Tools
有噴錯請求 Vocabulary專案也要裝 Microsoft.EntityFrameworkCore.Tools ,這邊我就不先探討原因了…(裝! 都裝!)
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_13-57-56_210188-1024x373.png)
改使用 Package Manager Console 指令產生 Model :
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_13-46-27_283838.png)
執行
Scaffold-DbContext "Data Source=localhost;Initial Catalog=VocabularyDb;User ID=sa;Password=[你的密碼]" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_14-00-44_787451-1024x199.png)
回到 Web 專案,在 Startup 註冊
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_14-05-42_773889-1024x307.png)
將連線加到 appsettings.json
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_14-14-48_543654-1024x244.png)
回到 WordsController 修改程式 :
[Route("api/[controller]")]
[ApiController]
public class WordsController : ControllerBase
{
private readonly VocabularyDbContext _dbContext;
public WordsController(VocabularyDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public IActionResult Get()
{
try
{
var result = _dbContext.Words.ToList();
return Ok(result);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
}
在 資料庫直接添加一筆資料測試
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_14-16-55_370767.png)
執行 Postman 查詢後可以正常存取(灑花
![](https://blog.givemin5.com/wp-content/uploads/2021/03/image-2021-03-14_14-17-15_631586-1024x482.png)
其他 : 如果資料庫有異動,則在參數多加一個 -f 複寫檔案
Scaffold-DbContext "Data Source=localhost;Initial Catalog=VocabularyDb;User ID=sa;Password=[你的密碼]" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels -f