人力資源技能對應規格 (EDM 範例應用程式)
使用 實體資料模型 (EDM) 時,這一組主題所描述之人力資源技能範例應用程式的對應規格,會將概念結構定義語言 (CSDL) 結構描述中的實體和關聯對應到中繼資料,此中繼資料會描述保存應用程式資料所用的資料庫。
如需此應用程式所使用之概念結構描述的詳細資訊,請參閱人力資源技能 WinApp (EDM 範例應用程式)。如需儲存中繼資料的詳細資訊,請參閱人力資源儲存中繼資料 (EDM 範例應用程式)。
下列對應規格語言 (MSL) 語法會將概念結構描述 HRSkills
中宣告的 EntityContainer 對應到資料來源 dbo
。
<EntityContainerMapping CdmEntityContainer="HRSkills"
StorageEntityContainer="dbo">
名為 HRSkillsTarget 的儲存中繼資料包含了對應到資料庫物件 dbo 的 EntityContainer。結構描述中所定義的實體容器與其定義所在的結構描述無關,指派給 CdmEntityContainer 和 StorageEntityContainer 的名稱不受結構描述命名空間名稱的限定。
此實作中的每一個實體都會對應到資料庫中的資料表。實體具有屬性,而且每一個屬性都會對應到資料表中的資料行。資料表中代表實體的索引鍵資料行之間會對應關聯。
實體會使用 EntitySetMapping 語法對應到資料庫資料表。關聯會使用 AssociationSetMapping 語法對應。如需 EntitySetMapping 和 AssociationSetMapping 的詳細資訊,請參閱結構描述和對應規格 (Entity Framework)。
下列 EntitySetMapping 語法會將概念結構描述中的 Skills 實體對應到資料庫中的 Skills 資料表,並將 Skills 實體的每一個屬性對應到資料庫中的資料行。
<EntitySetMapping Name="Skills">
<EntityTypeMapping
TypeName="IsTypeOf(HRSkillsModel.Skills)">
<MappingFragment StoreEntitySet="Skills">
<ScalarProperty Name="SkillId" ColumnName="SkillId" />
<ScalarProperty Name="SkillName" ColumnName="SkillName" />
<ScalarProperty Name="BriefDescription"
ColumnName="BriefDescription" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
下列 AssociationSetMapping 語法會定義 Skills 與 SkillInfo 實體之間關聯的對應。首先,AssociationSetMapping 會根據它的宣告名稱 SkillInfo_Skill 來識別 Skills 與 SkillInfo 實體之間所定義的關聯。然後此語法會識別 CSDL 檔案中所定義的實體:edm:TypeName="SkillInfo_Skill"
。接下來,edm:TableName="SkillInfo">
語法會讓中繼資料結構描述中的資料表名稱與 CSDL 檔案相互關聯。
此關聯的 End 屬性會在資料庫中,指定與概念結構描述中的實體和屬性相互關聯的資料行和資料行的資料表。例如,Skills 實體會使用 Skills 資料表的 SkillId 資料行,以識別關聯的 End 上的實體執行個體。此語法包含與 ColumnName 相互關聯的 ScalarProperty。
<AssociationSetMapping Name="SkillInfo_Skill"
TypeName="HRSkillsModel.SkillInfo_Skill" StoreEntitySet="SkillInfo">
<EndProperty Name="Skills">
<ScalarProperty Name="SkillId" ColumnName="SkillId" />
</EndProperty>
<EndProperty Name="SkillInfo">
<ScalarProperty Name="SkillInfoId"
ColumnName="SkillInfoId" />
</EndProperty>
</AssociationSetMapping>
對應規格
下列語法顯示完整的對應規格。EntityContainerMapping 標記的語法會指定命名空間和類別:edm:CdmEntityContainer="HRSkillsModel.HRSkills"
。這樣會對應到資料庫物件 dbo:edm:StorageEntityContainer="HRSkillsTarget.dbo"
。
CSDL 和 SSDL 結構描述中都會宣告 EntityContainer。對應會讓結構描述相互關聯,而建置程序則會讓資料庫中儲存的實體當做可程式化物件來使用。
<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S"
xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
<EntityContainerMapping StorageEntityContainer="dbo"
CdmEntityContainer="HRSkills">
<EntitySetMapping Name="Employees">
<EntityTypeMapping TypeName="IsTypeOf(HRSkillsModel.Employees)">
<MappingFragment StoreEntitySet="Employees">
<ScalarProperty Name="EmployeeId"
ColumnName="EmployeeId" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="Alias" ColumnName="Alias" />
<ScalarProperty Name="Email" ColumnName="Email" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="References">
<EntityTypeMapping
TypeName="IsTypeOf(HRSkillsModel.References)">
<MappingFragment StoreEntitySet="References">
<ScalarProperty Name="ReferenceId"
ColumnName="ReferenceId" />
<ScalarProperty Name="LastName" ColumnName="LastName" />
<ScalarProperty Name="FirstName" ColumnName="FirstName" />
<ScalarProperty Name="Position" ColumnName="Position" />
<ScalarProperty Name="Alias" ColumnName="Alias" />
<ScalarProperty Name="Email" ColumnName="Email" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="SkillInfo">
<EntityTypeMapping
TypeName="IsTypeOf(HRSkillsModel.SkillInfo)">
<MappingFragment StoreEntitySet="SkillInfo">
<ScalarProperty Name="SkillInfoId"
ColumnName="SkillInfoId" />
<ScalarProperty Name="URL" ColumnName="URL" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Skills">
<EntityTypeMapping
TypeName="IsTypeOf(HRSkillsModel.Skills)">
<MappingFragment StoreEntitySet="Skills">
<ScalarProperty Name="SkillId" ColumnName="SkillId" />
<ScalarProperty Name="SkillName" ColumnName="SkillName" />
<ScalarProperty Name="BriefDescription"
ColumnName="BriefDescription" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<AssociationSetMapping Name="Reference_Employee"
TypeName="HRSkillsModel.Reference_Employee" StoreEntitySet="References">
<EndProperty Name="Employees">
<ScalarProperty Name="EmployeeId" ColumnName="EmployeeId" />
</EndProperty>
<EndProperty Name="References">
<ScalarProperty Name="ReferenceId"
ColumnName="ReferenceId" />
</EndProperty>
</AssociationSetMapping>
<AssociationSetMapping Name="Skill_Employee"
TypeName="HRSkillsModel.Skill_Employee" StoreEntitySet="Skills">
<EndProperty Name="Employees">
<ScalarProperty Name="EmployeeId" ColumnName="EmployeeId" />
</EndProperty>
<EndProperty Name="Skills">
<ScalarProperty Name="SkillId" ColumnName="SkillId" />
</EndProperty>
</AssociationSetMapping>
<AssociationSetMapping Name="SkillInfo_Skill"
TypeName="HRSkillsModel.SkillInfo_Skill" StoreEntitySet="SkillInfo">
<EndProperty Name="Skills">
<ScalarProperty Name="SkillId" ColumnName="SkillId" />
</EndProperty>
<EndProperty Name="SkillInfo">
<ScalarProperty Name="SkillInfoId"
ColumnName="SkillInfoId" />
</EndProperty>
</AssociationSetMapping>
</EntityContainerMapping>
</Mapping>
另請參閱
概念
人力資源技能 WinApp (EDM 範例應用程式)
人力資源儲存中繼資料 (EDM 範例應用程式)
人力資源應用程式程式碼 (EDM 範例應用程式)
Entity Data Model 類型
Entity Data Model 關聯性