Northwind-Mappingschema (EDM)

Mappingspezifikationen ordnen konzeptionelle Typen entsprechenden Speicherstrukturen in einer Zieldatenbank zu. Die Mappingsyntax wird als Mapping-Spezifikationssprache (Mapping Specification Language, MSL) bezeichnet. MSL-Dateien haben die Erweiterung MSL. Weitere Informationen zum Mapping finden Sie unter Mappingspezifikation (MSL).

Mit dem <EntityContainerMapping>-Tag in einer MSL-Datei wird der EntityContainer des CSDL-Schemas dem StorageEntityContainer in einem Datenbankobjekt zugeordnet. In ähnlicher Weise werden mit dem <EntitySetMapping> -Tag und dem <EntityTypeMapping>-Tag Entitätenmengen und Entitätstypen des MSL-Schemas entsprechenden Strukturen in der Zieldatenbank zugeordnet.

NoteHinweis

In der XML-Hierarchie ist das EntityContainer-Element vom Schema-Element getrennt, obwohl der EntityContainer im Schema definiert ist. Der Name des EntityContainer enthält in der Mappingdatei nicht den Schemanamespace-Namen. Durch die Verwendung eines vom Schemanamespace-Namen qualifizierten Entitätencontainernamens wird eine Mappingausnahme verursacht.

Der vollständige Inhalt der Northwind-MSL-Datei wird im folgenden Beispiel dargestellt.

<?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>

Weitere Informationen über Schemas und Mapping finden Sie unter Schemas und Mappingspezifikation (Entity Framework).

Weitere Informationen über das Definieren von Entitäten und Zuordnungen finden Sie unter Implementieren von Entitäten (EDM).

Implementieren von Zuordnungen (EDM).

Siehe auch

Konzepte

Entity Data Model-Typen
Entity Data Model-Beziehungen

Weitere Ressourcen

Schemas und Mappingspezifikation (Entity Framework)