[練習][Asp.Net Core + Angular]打造一個單字記錄網站 – (4)建立 EntityFramework

      在〈[練習][Asp.Net Core + Angular]打造一個單字記錄網站 – (4)建立 EntityFramework〉中留言功能已關閉

雖然知道 Database First 被移除很久了,但目前專案還是主要使用資料庫為主,所以一直沒有機會使用。

但 Core 至少還是有提供 Scaffold-DbContext 可以使用 :

安裝 Microsoft.EntityFrameworkCore.SqlServer

到 Domain 裡面把 Word Class 刪除,建立 EFModels 資料夾

安裝 Microsoft.EntityFrameworkCore.Tools

有噴錯請求 Vocabulary專案也要裝 Microsoft.EntityFrameworkCore.Tools ,這邊我就不先探討原因了…(裝! 都裝!)

改使用 Package Manager Console 指令產生 Model :

執行

Scaffold-DbContext "Data Source=localhost;Initial Catalog=VocabularyDb;User ID=sa;Password=[你的密碼]" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels

回到 Web 專案,在 Startup 註冊

將連線加到 appsettings.json

回到 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);
            }
            
        }
    }

在 資料庫直接添加一筆資料測試

執行 Postman 查詢後可以正常存取(灑花

其他 : 如果資料庫有異動,則在參數多加一個 -f 複寫檔案

Scaffold-DbContext "Data Source=localhost;Initial Catalog=VocabularyDb;User ID=sa;Password=[你的密碼]" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EFModels -f

print