ASP.NET 4.0 與 Entity Framework 4-第一篇-採用Model-First 開發方式建立資料庫

來源:互聯網
上載者:User

本文是《ASP.NET 4.0與Entity Framework 4》系列文章的第一篇,該系列將向你介紹如何採用Entity Framewok4開發ASP.NET程式。文章會一步一步的教您使用Entity Framewok4建立資料庫。建立好的資料庫將會在以後該系列文章中使用。

摘要

已經發布的Visual Studio 2010 中包含了Entity Framewok4,它是微軟發布的第二版Entity Framewok(以下簡稱EF)。它在EF 1的基礎上,根據開發人員的建議,進行了非常多的改進,包含了與NHibernate之類O-R Mapping 工具類似的功能。O-R Mapping工具給我們產生了用於檢索和持久化資料的繁瑣代碼。我們只需要用可視化的工具建立類與表,表關係,預存程序和其他資料庫物件的映射。EP4 最大的一個新功能是:允許我們建立一個ADO.NET 實體物件模型,然後根據這個模型來產生資料庫。以前一般的做法是,先建立資料庫,後產生實體模型。當然,EF4還是支援一般的資料庫設計,但可以使用Visual Studio 基於物件模型設計資料庫,已經是改進了許多。

本文的目的是介紹如何如何通EF4建立一個ADO.NET 實體資料模型。採用的工具是Visual Studio 2010 Beta 2,可能會與最終發布的版本操作有所不同。以後的文章將會基於該應用逐步深入的講解如何採用EP4查詢展示資料,調用預存程序,對EF4產生的類進行自訂等等。

採用Model-First方式建立資料庫

步驟1:建立解決方案

1.運行Vistual Studio 2010 Beta2。

2.在開始頁面上點擊“new project”。

3.點擊C#節點,可以看到已經安裝的項目模板。

4.在模板列表中選擇ASP.NET Web Application。

5.輸入項目名“OrderSystem”,點擊“ok”。

這時,VS會在你指定的目錄,建立一個解決方案,在該目錄的子檔案下建立一個網站項目。

步驟2:建立ADO.NET 實體物件模型

下面就是建立ADO.NET 生實體模型了。對於本程式來說,我們有Users和Addresses兩個概念性模型。一個user可能有多個address,在模型中要體現這個關係。

1.在OrderSystem上右鍵,選擇Add,點擊New Item..(或者使用快速鍵Ctrl+Shift+A)。

2.點擊C#節點下面的Data子節點。

3.選擇ADO.NET Entity Data Model 模板。

4.將名字改為“OrderDB.edmx”,點擊“Add”按鈕。

5.VS將會顯示Entity Data Model Wizard.你可以選擇模型的來源。

6.選擇“Empty Model”,點擊“Finish”按鈕。

OrderDB.edmx將會添加到你的項目中,同時會顯示Entity Framework 設計器。

 

步驟3:建立實體關聯

下面將會建立user實體已經它與addresses實體的關係,首先建立user實體。

1.在Entity Framework 設計器右鍵,Add->Entity。

2.你會看到“Add Entity”對話方塊,輸入實體名。需要注意的是,當你輸入實體名時,系統會自動產生實體集合的名稱(實體名是一個代表一條紀錄的類的名稱,實體集後則是一個代表一組紀錄的類的名稱)。

3.VS預設會產生一個名為Id的主鍵。如果把你不想產生主鍵,不要選擇“Create key property”。本例中需要主鍵,所以保持選擇狀態。

4.點擊“OK”,UserAccout實體將會添加到實體圖表中。

5.接下來是給實體添加屬性。這些屬性將會映射到資料表中的欄位。我們將會添加FirstName和LastName屬性。

6.在UserAccount上右擊。選擇Add->Scalar property。

7.將屬性名稱改為FirstName。

8.在屬性視窗中,將最大長度設為50,資料類型不用改,預設是String.

9.以同樣的方式添加另一個名為LastName的屬性,最大長度也設為50。

下面是添加紀錄建立時間和更新時間屬性。我個人比較傾向於在每個實體中添加建立時間和更新時間屬性,這樣可以方便以後審查。這兩個屬性將作為一個複雜類型添加在每個實體中。複雜類型可以讓你定義一組屬性,滿足各種實體的需求。

10.模型瀏覽視窗中,在Complex Types 節點上右擊。有時可能要多點擊幾下才能選中,這可能是VS Beta2的bug。點中Coomplex Types後,在彈出的菜單中選擇“Create Complex Type”。

11.將複雜類型的名字改為 AuditFields。

12.右擊模型瀏覽視窗的AuditFileds複雜屬性,在彈出的菜單中,選擇Add->Scalar Property->DateTime。

13.將名字改為“InsertDate”。

14.用同樣的方式添加UpdateDate屬性到該複雜類型中。

15.接下來你可以添加該複雜類型到UserAccount實體了,右擊UserAccount實體,在彈出的菜單中選擇Add->Complex Property。

16.將名字改為“AuditFileds”,資料類型預設為AudtFields。

17.在設計器上右擊,彈出的菜單中選擇Add->Entity.

18.實體名字改為“Address”,點擊“OK”。

19.給Address實體添加Address1,Address2,City,State和Zip屬性,所有的屬性都為String類型,資料長度分別為:50,50,50,2和5。

20.在屬性視窗中,將Address2的Nullable設定為True,其他幾個屬性都是必填的。

21.同樣,給Address實體添加AuditFileds屬性。

下面就是建立UserAccount和Address實體之間的關係了。

22.右擊UserAccount實體,快顯功能表中選擇Add->Association。

23.你會看到在Add Association視窗預設設定好了UserAcccount和Address一對多的關係,如果你要設定不同類型的關係,在Mutiplicity下拉框中選擇就可以了,本例中保持預設就可以。點擊“OK”後,你會看到Address表多了一個UserAccountId屬性。

 

步驟4:產生資料庫

實體已經建立好了,下面是建立資料庫了。在VS操作這些非常方便,它將會產生用來建立表,索引和表關係的DLL語句指令碼。

1.在設計器上右擊,選擇Generate Database from Model.將會出現Generate Database Wizard視窗。

2.點擊“New Connection”按鈕。

3.輸入Server name,選擇Windows Authentication 或 SQL Server Authentication,這取決於你資料庫系統的串連方式。

4.資料庫名輸入“OrderSystem”,點擊“OK”。

5.這時VS會提示你資料庫不存在,問你是否建立一個資料庫,點擊“Yes”。

6.資料庫“OrderSystem”建立好後,會返回到Generate Database Wizard視窗,點擊“Next”。

7.用於建立資料庫的DLL語句這時就產生了。

8.點擊“Finish”按鈕。

9.你會看到項目中多了一個OrderDB.edmx.sql檔案,它裡麵包含用來建立資料庫的DLL語句。檔案內容如下:

SET QUOTED_IDENTIFIER OFF;SET ANSI_NULLS ON;GOUSE [OrderSystem]GOIF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]')GO-- ---------------------------------------------------- Dropping existing FK constraints-- --------------------------------------------------IF OBJECT_ID(N'[dbo].[FK_UserAccountAddress]', 'F') IS NOT NULL    ALTER TABLE [dbo].[Addresses] DROP CONSTRAINT [FK_UserAccountAddress]GO-- ---------------------------------------------------- Dropping existing tables-- --------------------------------------------------IF OBJECT_ID(N'[dbo].[UserAccounts]', 'U') IS NOT NULL    DROP TABLE [dbo].[UserAccounts];GOIF OBJECT_ID(N'[dbo].[Addresses]', 'U') IS NOT NULL    DROP TABLE [dbo].[Addresses];GO-- ---------------------------------------------------- Creating all tables-- ---------------------------------------------------- Creating table 'UserAccounts'CREATE TABLE [dbo].[UserAccounts] (    [Id] int  NOT NULL,    [FirstName] nvarchar(50)  NOT NULL,    [LastName] nvarchar(50)  NOT NULL,    [AuditFields_InsertDate] datetime  NOT NULL,    [AuditFields_UpdateDate] time  NOT NULL);GO-- Creating table 'Addresses'CREATE TABLE [dbo].[Addresses] (    [Id] int  NOT NULL,    [Address1] nvarchar(50)  NOT NULL,    [Address2] nvarchar(50)  NULL,    [City] nvarchar(50)  NOT NULL,    [State] nvarchar(2)  NOT NULL,    [Zip] nvarchar(5)  NOT NULL,    [AuditFields_InsertDate] datetime  NOT NULL,    [AuditFields_UpdateDate] time  NOT NULL,    [UserAccountId] int  NOT NULL);GO-- ---------------------------------------------------- Creating all Primary Key Constraints-- ---------------------------------------------------- Creating primary key on [Id] in table 'UserAccounts'ALTER TABLE [dbo].[UserAccounts] WITH NOCHECK ADD CONSTRAINT [PK_UserAccounts]    PRIMARY KEY CLUSTERED ([Id] ASC)    ON [PRIMARY]GO-- Creating primary key on [Id] in table 'Addresses'ALTER TABLE [dbo].[Addresses] WITH NOCHECK ADD CONSTRAINT [PK_Addresses]    PRIMARY KEY CLUSTERED ([Id] ASC)    ON [PRIMARY]GO-- ---------------------------------------------------- Creating all Foreign Key Constraints-- ---------------------------------------------------- Creating foreign key on [UserAccountId] in table 'Addresses'ALTER TABLE [dbo].[Addresses] WITH NOCHECK ADD CONSTRAINT [FK_UserAccountAddress]    FOREIGN KEY ([UserAccountId])    REFERENCES [dbo].[UserAccounts]        ([Id])    ON DELETE NO ACTION ON UPDATE NO ACTIONGO

需要注意的是,現在資料庫還沒有建立相應的表。要建立這些表,你可以開啟OrderDB.edmx.sql檔案,右擊選擇Execute SQL。這時VS會提示你串連到資料庫系統,輸入相關資訊,點擊“Connect”,登陸成功後,將會執行這些SQL語句,執行完後資料庫的表就建立好了。

小結

以上就是採用Entity Framework的Model First方式建立資料庫的的所有步驟了。相比以前的版本,有相當大的改進,現在你只需要設計物件模型,VS會自動幫你產生建立資料表,索引,表關係的語句。

本文是該系列文章的第一篇。以後的文章將會帶你逐步深入到Entity Framework4和ASP.NET 4.0的世界。下一篇文章將會向你介紹如何呈現這些資料,以及採用Entity Framework4進行資料的增刪改查,希望你能喜歡。

LloydSheng

專案檔:http://files.cnblogs.com/lloydsheng/OrderSystem.zip

獨立部落格本文連結:http://lloydsheng.com/2010/04/aspnet-40-and-entity-framework4-part1-create-database-using-modelfirst-development.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.