Condition 元素 (AssociationSetMapping)

AssociationSetMapping 中的 Condition 元素指定对 实体数据模型 (EDM) 中映射的 Association 的有效性的逻辑要求。映射关联会标识数据表中与相关实体的属性相对应的列。

以下 AssociationSetMapping 无素在 AdventureWorks 数据库的 HumanResources 段中映射用概念性架构定义语言 (CSDL) 定义的 Employee_Employee_ManagerID 关联。以下映射规范将 Employee 实体与指定为经理的另一个 Employee 实体相关联。

<?xml version="1.0" encoding="utf-8"?>
<Mapping Space="C-S" 
    xmlns:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS" 
    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>

由此 Association 关联的两个实体都是 Employee 实体。该映射有效与否将取决于 AssociationSetMappng 的最后一行中所指定的 Condition。若要使 Association 有效,必须将 Employee 实体与指定为经理的另一个 Employee 实体连接在一起。表示此连接的存储结构是 Employee 表的 ManagerID 列中的外键约束。如果此条件为 Null,就不会满足此条件,而在 Association 的实例中指定其他详细信息也就没有什么意义。如果在 ManagerID 值为 Null 时在代码中创建此类型的 AssociationAssociation 将会在调用 SaveChanges 方法时引发异常。

另请参见

概念

EntityContainerMapping 元素 (MSL)
Association 元素 (CSDL)
AssociationSet 元素 (EntityContainer CSDL)
Association 元素 (SSDL)
AssociationSet 元素 (EntityContainer SSDL)
AdventureWorks 完整模型 (EDM)