Compartir a través de


Elemento AssociationSetMapping (MSL)

Al asignar una asociación en el Entity Data Model (EDM) se identifican las columnas de las tablas de datos que corresponden a los elementos EndProperty de las entidades relacionadas. Para que las entidades del esquema conceptual estén relacionadas, debe haber una columna de clave externa en la tabla de datos que contenga alguna propiedad de otra tabla. Normalmente, esa columna de clave externa hace corresponder una entidad a la propiedad de clave.

Un elemento AssociationSetMapping se especifica dentro de un elemento EntityContainerMapping. La siguiente declaración del AssociationSetMappingEmployee_Employee_ManagerID define la asignación del AssociationSet y el TypeName definidos en el esquema conceptual AdventureWorksHRModel.

Dado que las dos entidades relacionadas son entidades Employee, una tabla contiene los datos de ambas. Los elementos EndProperty de este ejemplo especifican el rol de cada entidad relacionada definida en el esquema conceptual y los elementos ScalarProperty especifican una propiedad de cada entidad y el elemento ColumnName al que corresponde esta propiedad. Los extremos de esta asociación son ambos entidades Employee y la propiedad identificadora en cada caso está vinculada a una columna EmployeeID correspondiente de la tabla de datos Employee. La condición especifica que a la columna ManagerID de la segunda entidad Employee se le debe asignar un valor; de lo contrario, el elemento Association no es válido.

<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S" 
    xmlns="urn:schemas-microsoft-com:windows:storage:mapping:CS">
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

    <AssociationSetMapping Name="Employee_Employee_ManagerID" 
TypeName="AdventureWorksHRModel.Employee_Employee_ManagerID" 
StoreEntitySet="Employee">
      <EndProperty Name="Employee">
        <ScalarProperty Name="EmployeeID" ColumnName="ManagerID" />
      </EndProperty>
      <EndProperty Name="EmployeeManager">
        <ScalarProperty Name="EmployeeID" ColumnName="EmployeeID" />
      </EndProperty>
      <Condition ColumnName="ManagerID" IsNull="false" />
    </AssociationSetMapping>

  </EntityContainerMapping>

En este ejemplo, el elemento AssociationSetMapping forma parte del esquema AdventureWorksHRModel. El elemento HumanResourcesEntityContainerMapping de esta AssociationSetMapping se asigna a la asociación Employee_Employee_ManagerID. La asociación relaciona una entidad de empleado con otra entidad de empleado designado como gerente.

Esta asignación depende de la Condition especificada en la línea final de AssociationSetMapping. Para que la asociación sea válida, debe conectar una entidad Employee con otra entidad Employee designada como gerente mediante un valor de clave externa en la columna ManagerID de la tabla Employee. Si a esta columna no se le asigna un valor, no se cumple la condición, y no tendría sentido asignar más detalles en esta asociación. Si una asociación de este tipo se crea en el código cuando el valor de ManagerID es NULL, la asociación produce una excepción cuando se llama a SaveChanges.

Vea también

Conceptos

Elemento EntityContainerMapping (MSL)
Elemento Association (CSDL)
Elemento AssociationSet (CSDL EntityContainer)
Elemento Association (SSDL)
Elemento AssociationSet (SSDL EntityContainer)
Modelo completo (EDM) de AdventureWorks