Поделиться через


Схема сопоставления Northwind (модель EDM)

Спецификации сопоставления соединяют концептуальные типы с соответствующими структурами хранилищ в базе данных-получателе. Синтаксис сопоставления называется языком MSL (mapping specification language). MSL-файлы имеют расширение .msl. Дополнительные сведения о сопоставлении см. в разделе Спецификация сопоставления (язык MSL).

Тег <EntityContainerMapping> в MSL-файле сопоставляет элемент EntityContainer CSDL-схемы с элементом StorageEntityContainer в объекте базы данных. Аналогично теги <EntitySetMapping> и <EntityTypeMapping> сопоставляют наборы сущностей и типы сущностей из MSL-схемы с соответствующими структурами в базе данных-получателе.

NoteПримечание.

В иерархии 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)