Esquema de asignación de Northwind (EDM)

Las especificaciones de la asignación conectan los tipos conceptuales con las estructuras de almacenamiento correspondientes en una base de datos de destino. La sintaxis de la asignación se denomina lenguaje de especificación de asignaciones (MSL). Los archivos MSL tienen la extensión .msl. Para obtener más información acerca de la asignación, vea Especificación de asignaciones (MSL).

La etiqueta <EntityContainerMapping> de un archivo MSL asigna el EntityContainer del esquema del lenguaje de definición de esquemas conceptuales (CSDL) al StorageEntityContainer en un objeto de base de datos. De igual forma, las etiquetas <EntityTypeMapping> y <EntitySetMapping> asignan los conjuntos de entidades y los tipos del esquema MSL a las estructuras correspondientes de la base de datos de destino.

Nota

En la jerarquía XML, el elemento EntityContainer es independiente del elemento Schema, aunque EntityContainer esté definido en el esquema. El nombre del EntityContainer no incluye el nombre del espacio de nombres de esquema en el archivo de asignación. El uso de un nombre de contenedor de entidades certificado por el nombre del espacio de nombres del esquema produce una excepción de asignación.

El contenido completo del archivo MSL Northwind se muestra en el ejemplo siguiente.

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

Para obtener más información acerca de los esquemas y la asignación, vea Especificación de asignaciones y esquemas (Entity Framework).

Para obtener más información sobre cómo definir las entidades y las asociaciones, vea Implementar entidades (EDM).

Implementar asociaciones (EDM).

Vea también

Conceptos

Tipos del Entity Data Model
Relaciones del Entity Data Model

Otros recursos

Especificación de asignaciones y esquemas (Entity Framework)