程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Entity Framework學習中級篇1—EF支持復雜類型的實現

Entity Framework學習中級篇1—EF支持復雜類型的實現

編輯:關於ASP.NET

本節,將介紹如何手動構造復雜類型(ComplexType)以及復雜類型的簡單操作。

通常,復雜類型是指那些由幾個簡單的類型組合而成的類型。比如:一張Customer表,其中有FristName和LastName字段,那麼對應的Customer實體類將會有FristName和LastName這兩個屬性。當我們想把FirstName和LastName合成一個名為CustomerName屬性時,此時,如果要在EF中實現這個目的,那麼我們就需要用到復雜類型。

目前,由於EF不能顯示支持復雜類型,所以我們無法在VS裡的可視化設計器裡面來設計我們需要的復雜類型。所以,我們需要手動修改實體模型,以便使其支持復雜類型的屬性。修改的主要步驟有以下幾步:

l 產生實體模型

l 修改CSDL文件

l 修改msl文件

l 重新生成模型實體類

在後續的介紹,我使用數據庫使用的是NorthWind,並針對Customer表對應的實體類來增加復雜屬性Address,其中復雜屬性Address由Address,City,Region,Country和PostalCode這個幾個組合而成。

下面,介紹具體的操作步驟:

第一步:產生實體模型

實體模型的產生我們可以直接通過在VS可視化設計器來產生(如果不會,請參考《Entity Framework 學習初級篇1--EF基本概況》)。或者使用EdmGen工具來產生(EdmGen工具位於:系統盤符:\WINDOWS\Microsoft.NET\Framework\v3.5下面)。具體步驟就不復述了。

我產生的實體模型文件是:NorthwindEnites.edmx

第二步:修改csdl文件

產生了實體模型後,我們使用記事本或其他文本編輯工具打開實體模型,(小技巧:可以把實體模型後綴.edmx改為.xml ,然後把實體模型文件直接拖到VS裡面進行修改,這樣修改起來比較方便,待修改完畢後,將後綴改回來即可。)

接著,開始手動修改csdl文件,找到模型文件中關於csdl定義的部分,然後找到實體類型名為Customers的定義節,刪除原來的Address,City,Region,Country,PostalCode屬性定義,然後添加一個名為Address的屬性,如下代碼所示:

<EntityType Name="Customers">
<Key>
<PropertyRef Name="CustomerID" />
</Key>
<Property Name="CustomerID" Type="String" Nullable="false" MaxLength="5" Unicode="true" FixedLength="true" />
<Property Name="CompanyName" Type="String" Nullable="false" MaxLength="40" Unicode="true" FixedLength="false" />
<Property Name="ContactName" Type="String" MaxLength="30" Unicode="true" FixedLength="false" />
<Property Name="ContactTitle" Type="String" MaxLength="30" Unicode="true" FixedLength="false" />
<Property Name="Address" Type="NorthwindModel .CommonAddress" Nullable="false"></Property>
<Property Name="Phone" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
<Property Name="Fax" Type="String" MaxLength="24" Unicode="true" FixedLength="false" />
<NavigationProperty Name="Orders" Relationship="NorthwindModel .FK_Orders_Customers" FromRole="Customers" ToRole="Orders" />
<NavigationProperty Name="CustomerDemographics" Relationship="NorthwindModel .CustomerCustomerDemo" FromRole="Customers" ToRole="CustomerDemographics" />
</EntityType>

接著,需要添加一個名為CommonAddress復雜類型的定義,具體如下代碼:

<ComplexType Name="CommonAddress">
<Property Name="Address" Type="String" MaxLength="60" Unicode="true" FixedLength="false" />
<Property Name="City" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
<Property Name="Region" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
<Property Name="PostalCode" Type="String" MaxLength="10" Unicode="true" FixedLength="false" />
<Property Name="Country" Type="String" MaxLength="15" Unicode="true" FixedLength="false" />
</ComplexType>

至此,csdl部分修改完畢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved