.net在開發中比較常使用DB first來建立關聯模型,
因為通常系統已經有資料庫了,或是有些大型專案是由DBA在管控DB schema,
所以在已經存在DB的情況下,EF提供了DB first來實現ORM的開發,
透過EDMX檔案時產生實體關聯對應,
首先建立一個名為Blog的DB,
並使用SQL script建立兩張資料表,
CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (200) NULL,
[Url] NVARCHAR (200) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);
CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
在Model資料夾底下建立模型
照著設定完成之後,可以在EDXM檔中看到對應的Table
還可以看到系統幫我們產生的像先前在code first範例中所以必須手動建立的DbContext和類別,
接著就和之前一樣透過scaffolding來新增BlogsController
Visual Studio 幫我們自動產生 CRUD頁面
就可以完成一個簡單的DB first範例
如果遇到資料表有異動情況,例如在blogs新增一個欄位
必須在EDMX檔案中去更新對應,
更新完成後,可以看到模型也跟著更新完成了