Database First - 資料庫優先- EF6 - Microsoft Learn
文章推薦指數: 80 %
Entity Framework 6 中的資料庫優先.
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
InternetExplorer和MicrosoftEdge的詳細資訊
目錄
結束焦點模式
閱讀英文
儲存
目錄
閱讀英文
儲存
列印
Twitter
LinkedIn
Facebook
電子郵件
目錄
DatabaseFirst
發行項
09/28/2022
7位參與者
本文內容
這段影片和逐步解說提供使用EntityFramework進行DatabaseFirst開發的簡介。
DatabaseFirst可讓您從現有的資料庫反向工程模型。
模型會儲存在EDMX檔案中,(.edmx副檔名),而且可以在EntityFrameworkDesigner中檢視和編輯。
您在應用程式中互動的類別會自動從EDMX檔案產生。
觀賞影片
這段影片提供使用EntityFramework進行DatabaseFirst開發的簡介。
DatabaseFirst可讓您從現有的資料庫反向工程模型。
模型會儲存在EDMX檔案中,(.edmx副檔名),而且可以在EntityFrameworkDesigner中檢視和編輯。
您在應用程式中互動的類別會自動從EDMX檔案產生。
主講人RowanMiller
影片:WMV|MP4|WMV(ZIP)
必要條件
您必須至少安裝VisualStudio2010或VisualStudio2012,才能完成本逐步解說。
如果您使用VisualStudio2010,您也必須安裝NuGet。
1.建立現有的資料庫
一般而言,當您將目標設為現有的資料庫時,系統就會建立現有的資料庫,但在此逐步解說中,我們需要建立資料庫才能存取。
隨VisualStudio一起安裝的資料庫伺服器會根據您安裝的VisualStudio版本而有所不同:
如果您使用VisualStudio2010,您將建立SQLExpress資料庫。
如果您使用VisualStudio2012,您將建立LocalDB資料庫。
讓我們繼續產生資料庫。
開啟VisualStudio
檢視->伺服器總管
以滑鼠右鍵按一下[資料連線->新增連線...
如果您尚未從[伺服器總管]連線到資料庫,則必須先選取[MicrosoftSQLServer]作為資料來源
根據您已安裝的LocalDB或SQLExpress連線到LocalDB或SQLExpress,然後輸入DatabaseFirst.Blogging作為資料庫名稱
選取[確定],系統會詢問您是否要建立新的資料庫,選取[是]
新的資料庫現在會出現在[伺服器總管]中,以滑鼠右鍵按一下它,然後選取[新增查詢]
將下列SQL複製到新的查詢,然後在查詢上按一下滑鼠右鍵,然後選取[執行]
CREATETABLE[dbo].[Blogs](
[BlogId]INTIDENTITY(1,1)NOTNULL,
[Name]NVARCHAR(200)NULL,
[Url]NVARCHAR(200)NULL,
CONSTRAINT[PK_dbo.Blogs]PRIMARYKEYCLUSTERED([BlogId]ASC)
);
CREATETABLE[dbo].[Posts](
[PostId]INTIDENTITY(1,1)NOTNULL,
[Title]NVARCHAR(200)NULL,
[Content]NTEXTNULL,
[BlogId]INTNOTNULL,
CONSTRAINT[PK_dbo.Posts]PRIMARYKEYCLUSTERED([PostId]ASC),
CONSTRAINT[FK_dbo.Posts_dbo.Blogs_BlogId]FOREIGNKEY([BlogId])REFERENCES[dbo].[Blogs]([BlogId])ONDELETECASCADE
);
2.建立應用程式
為了簡化工作,我們將建置使用DatabaseFirst執行資料存取的基本主控台應用程式:
開啟VisualStudio
檔案-新增->>專案...
從左側功能表選取[Windows]和[主控台應用程式]
輸入DatabaseFirstSample作為名稱
選取[確定]
3.反向工程模型
我們將使用包含在VisualStudio中的EntityFrameworkDesigner來建立模型。
專案->新增專案...
從左側功能表中選取[資料],然後ADO.NET實體資料模型
輸入BloggingModel作為名稱,然後按一下[確定]
這會啟動實體資料模型精靈
選取[從資料庫產生],然後按[下一步]
選取您在第一節中建立之資料庫的連線,輸入BloggingCoNtext作為連接字串的名稱,然後按[下一步]
按一下[資料表]旁的核取方塊以匯入所有資料表,然後按一下[完成]
在反向工程程式完成之後,新的模型就會新增至您的專案,並開啟以供您在EntityFrameworkDesigner中檢視。
App.config檔案也已新增至您的專案,其中包含資料庫的連線詳細資料。
VisualStudio2010中的其他步驟
如果您在VisualStudio2010中工作,則需要遵循一些額外的步驟,才能升級至最新版的EntityFramework。
升級很重要,因為它可讓您存取改良的API介面,這更容易使用,以及最新的Bug修正。
首先,我們需要從NuGet取得最新版的EntityFramework。
專案–>管理NuGet套件...如果您沒有[管理NuGet套件...]選項,您應該安裝最新版的NuGet
選取[線上]索引標籤
選取EntityFramework套件
按一下[安裝]
接下來,我們需要交換模型,以產生使用DbCoNtextAPI的程式碼,這是在更新版本的EntityFramework中引進的。
以滑鼠右鍵按一下EFDesigner中模型的空白位置,然後選取[新增程式碼產生專案...
從左側功能表中選取[線上範本],然後搜尋DbCoNtext
選取C#的EF5.xDbCoNtext產生器,輸入BloggingModel作為名稱,然後按一下[新增]
4.讀取&寫入資料
既然我們已經有模型,就可以使用它來存取某些資料。
我們將用來存取資料的類別會根據EDMX檔案自動為您產生。
此螢幕擷取畫面來自VisualStudio2012,如果您使用VisualStudio2010,則BloggingModel.tt和BloggingModel.CoNtext.tt檔案會直接位於您的專案下,而不是巢狀放在EDMX檔案下。
在Program.cs中實作Main方法,如下所示。
此程式碼會建立內容的新實例,然後使用它來插入新的部落格。
然後它會使用LINQ查詢,從依Title依字母順序排序的資料庫擷取所有部落格。
classProgram
{
staticvoidMain(string[]args)
{
using(vardb=newBloggingContext())
{
//CreateandsaveanewBlog
Console.Write("EnteranameforanewBlog:");
varname=Console.ReadLine();
varblog=newBlog{Name=name};
db.Blogs.Add(blog);
db.SaveChanges();
//DisplayallBlogsfromthedatabase
varquery=frombindb.Blogs
orderbyb.Name
selectb;
Console.WriteLine("Allblogsinthedatabase:");
foreach(variteminquery)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("Pressanykeytoexit...");
Console.ReadKey();
}
}
}
您現在可以執行應用程式並加以測試。
EnteranameforanewBlog:ADO.NETBlog
Allblogsinthedatabase:
ADO.NETBlog
Pressanykeytoexit...
5.處理資料庫變更
現在是時候對資料庫架構進行一些變更,當我們進行這些變更時,也需要更新模型以反映這些變更。
第一個步驟是對資料庫架構進行一些變更。
我們會將Users資料表新增至架構。
在[伺服器總管]中以滑鼠右鍵按一下DatabaseFirst.Blogging資料庫,然後選取[新增查詢]
將下列SQL複製到新的查詢,然後在查詢上按一下滑鼠右鍵,然後選取[執行]
CREATETABLE[dbo].[Users]
(
[Username]NVARCHAR(50)NOTNULLPRIMARYKEY,
[DisplayName]NVARCHAR(MAX)NULL
)
現在架構已更新,現在就可以使用這些變更來更新模型。
以滑鼠右鍵按一下EF設計工具中模型的空白位置,然後選取[從資料庫更新模型...],這會啟動[更新精靈]
在[更新精靈]的[新增]索引標籤上,核取[資料表]旁的方塊,這表示我們想要從架構新增任何新的資料表。
[重新整理]索引標籤會顯示模型中將檢查更新期間是否有變更的任何現有資料表。
[刪除]索引標籤會顯示已從架構中移除的任何資料表,也會在更新過程中從模型中移除。
系統會自動偵測到這兩個索引標籤上的資訊,而且僅供參考之用,您無法變更任何設定。
按一下[更新精靈]上的[完成]
模型現在已更新為包含新的User實體,該實體會對應至我們新增至資料庫的Users資料表。
摘要
在本逐步解說中,我們已探討DatabaseFirst開發,這可讓我們根據現有的資料庫在EF設計工具中建立模型。
然後,我們會使用該模型從資料庫讀取和寫入一些資料。
最後,我們已更新模型以反映我們對資料庫架構所做的變更。
本文內容
延伸文章資訊
- 1[Day05] Entity Framework Core與DB First - iT 邦幫忙- iThome
今天就來介紹ASP.NET Core 使用EF Core 來存取Mariadb(MySQL)資料庫. EF Core 有提供兩種開發方式DB First 與Code First. 本篇將以DB ...
- 2Working with Database First Approach in Entity Framework Core
So for the demo purposes I am using an class library project and an ASP.NET Core Web API project,...
- 3Entity Framework Core with Existing Database
Creating entity & context classes for an existing database is called Database-First approach. EF ...
- 4[ASP.net Core] 使用Entity Framework Core Database First方式 ...
access data through Entity Framework Core Database First in separate classlibrary project. 嚴格來說,標...
- 5Microsoft Claims Entity Framework Core 7 Faster When Saving Changes