Схема сопоставления Northwind (модель EDM)
Спецификации сопоставления соединяют концептуальные типы с соответствующими структурами хранилищ в базе данных-получателе. Синтаксис сопоставления называется языком MSL (mapping specification language). MSL-файлы имеют расширение .msl. Дополнительные сведения о сопоставлении см. в разделе Спецификация сопоставления (язык MSL).
Тег <EntityContainerMapping> в MSL-файле сопоставляет элемент EntityContainer CSDL-схемы с элементом StorageEntityContainer в объекте базы данных. Аналогично теги <EntitySetMapping> и <EntityTypeMapping> сопоставляют наборы сущностей и типы сущностей из MSL-схемы с соответствующими структурами в базе данных-получателе.
Примечание. |
---|
В иерархии XML элемент EntityContainer отделен от элемента Schema, даже если в схеме определен элемент EntityContainer. В файле сопоставления имя элемента EntityContainer не включает имя пространства имен схемы. Использование имени контейнера сущностей, дополненного именем пространства имен схемы, вызывает исключение при сопоставлении. |
Полное содержимое MSL-файла Northwind показано в следующем примере.
<?xml version="1.0" encoding="utf-8"?>
<Mapping xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS"
xmlns:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS"
Space="C-S">
<EntityContainerMapping CdmEntityContainer="Northwind" StorageEntityContainer="dbo">
<EntitySetMapping Name="Categories">
<EntityTypeMapping TypeName="NorthwindLib.Category">
<MappingFragment StoreEntitySet="Categories">
<ScalarProperty Name="CategoryID" ColumnName="CategoryID" />
<ScalarProperty Name="CategoryName" ColumnName="CategoryName" />
<ScalarProperty Name="Description" ColumnName="Description" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Products">
<EntityTypeMapping TypeName="NorthwindLib.Product">
<MappingFragment StoreEntitySet="Products">
<ScalarProperty Name="ProductID" ColumnName="ProductID" />
<ScalarProperty Name="ProductName" ColumnName="ProductName" />
<!--<ScalarProperty edm:Name="CategoryID"
edm:ColumnName="CategoryID" />-->
<ScalarProperty Name="UnitPrice" ColumnName="UnitPrice" />
<Condition ColumnName="Discontinued" Value="false" />
</MappingFragment>
</EntityTypeMapping>
<EntityTypeMapping TypeName="NorthwindLib.DiscontinuedProduct">
<MappingFragment StoreEntitySet="Products">
<ScalarProperty Name="ProductID" ColumnName="ProductID" />
<ScalarProperty Name="ProductName" ColumnName="ProductName" />
<!--<ScalarProperty edm:Name="CategoryID"
edm:ColumnName="CategoryID" />-->
<ScalarProperty Name="UnitPrice" ColumnName="UnitPrice" />
<ScalarProperty Name="UnitsInStock" ColumnName="UnitsInStock" />
<Condition ColumnName="Discontinued" Value="true" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Customers">
<EntityTypeMapping TypeName="NorthwindLib.Customer">
<MappingFragment StoreEntitySet="Customers">
<ScalarProperty Name="CustomerID" ColumnName="CustomerID" />
<ScalarProperty Name="CompanyName" ColumnName="CompanyName" />
<ScalarProperty Name="ContactName" ColumnName="ContactName" />
<ScalarProperty Name="City" ColumnName="City" />
<ScalarProperty Name="Country" ColumnName="Country" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="SalesOrders">
<EntityTypeMapping TypeName="NorthwindLib.SalesOrder">
<MappingFragment StoreEntitySet="Orders">
<ScalarProperty Name="OrderID" ColumnName="OrderID" />
<!--<ScalarProperty edm:Name="CustomerID"
edm:ColumnName="CustomerID" /> -->
<ScalarProperty Name="OrderDate" ColumnName="OrderDate" />
<ScalarProperty Name="ShipCity" ColumnName="ShipCity" />
<ScalarProperty Name="ShipCountry" ColumnName="ShipCountry" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<AssociationSetMapping Name="CustomerOrders" TypeName="NorthwindLib.Customer_Order"
StoreEntitySet="Orders">
<EndProperty Name="Customer">
<ScalarProperty Name="CustomerID" ColumnName="CustomerID" />
</EndProperty>
<EndProperty Name="SalesOrder">
<ScalarProperty Name="OrderID" ColumnName="OrderID" />
</EndProperty>
</AssociationSetMapping>
<AssociationSetMapping Name="CategoryProducts" TypeName="NorthwindLib.Category_Product"
StoreEntitySet="Products">
<EndProperty Name="Category">
<ScalarProperty Name="CategoryID" ColumnName="CategoryID" />
</EndProperty>
<EndProperty Name="Product">
<ScalarProperty Name="ProductID" ColumnName="ProductID" />
</EndProperty>
</AssociationSetMapping>
</EntityContainerMapping>
</Mapping>
Дополнительные сведения о схемах и сопоставлении см. в разделе Спецификация схем и сопоставлений (платформа Entity Framework).
Дополнительные сведения об определении сущностей и ассоциаций см. в разделе Реализация сущностей (модель EDM).
Реализация ассоциаций (модель EDM).
См. также
Основные понятия
Типы модели EDM
Связи в модели EDM
Другие ресурсы
Спецификация схем и сопоставлений (платформа Entity Framework)