EntityFramework核心是EDM實體數據模型,該模型由三部分組成。 (1) 概念模型,由概念架構定義語言文件(.csdl)來定義. (2) 映射,由映射規範語言文件(.msl)定義. (3) 存儲模型,由存儲架構定義語言文件(.ssdl)來定義,亦稱邏輯模型. 上述概念比較抽象,歸根到本質 ...
EntityFramework核心是EDM實體數據模型,該模型由三部分組成。
(1) 概念模型,由概念架構定義語言文件(.csdl)來定義.
(2) 映射,由映射規範語言文件(.msl)定義.
(3) 存儲模型,由存儲架構定義語言文件(.ssdl)來定義,亦稱邏輯模型.
上述概念比較抽象,歸根到本質,這個EDM可以看作一個XML文件,該文件包含了三部分:CSDL,MSL和SSDL。
1) CSDL,我們常用的實體類。
該部分(XML)包含了實體,屬性,主鍵,關聯等等。大致結構如下:
<EntityContainer Name="A">
<FunctionImport />
<EntitySet Name="Customer" EntityType="ASSModel.Customer" />
<AssociationSet />
<EntityType Name="Customer">
<Key><PropertyRef Name="CustomerId_Guid" /></Key>
<Property Name="CustomerId_Guid" Type="Guid" Nullable="false" />
<Property Name="CustomerName_Nvarchar" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="true" />
</EntityType>
</EntityContainer>
2) SSDL,與CSDL文件結構類似,偏向以資料庫概念來描述。大致結構如下:
<EntityContainer Name="B">
...
</EntityContainer>
<EntityType>
<Property Name="CustomerName_Nvarchar" Type="nvarchar" MaxLength="200" />
...
</EntityType>
3) MSL,描述的是CSDL與SSDL的對應關係,包括CSDL中的屬性與SSDL中列的對應關係。大致結構如下:
<EntityContainerMapping StorageEntityContainer="B" CdmEntityContainer="A">
<EntitySetMapping Name="Assignments">
<EntityTypeMapping TypeName="IsTypeOf(ASSModel.Assignments)">
<MappingFragment StoreEntitySet="Assignments">
<ScalarProperty Name="CustomerName_Nvarchar" ColumnName="CustomerName_Nvarchar" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
</EntityContainerMapping>
XML文件中的還有很多細節東西,可以構建一個EDM打開看一看。