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


Элемент EntityTypeMapping (язык MSL)

Элемент EntityTypeMapping в языке MSL определяет сопоставление между типом сущности концептуальной модели и таблицами или представлениями в основной базе данных. Сведения о типах сущностей концептуальной модели и базовых таблицах или представлениях базы данных см. в разделах Элемент EntityType (язык CSDL) и Элемент EntitySet (язык SSDL). Тип сущности концептуальной модели, с которым выполняется сопоставление, определяется атрибутом TypeName элемента EntityTypeMapping. Таблица или представление, с которыми выполняется сопоставление, задается атрибутом StoreEntitySet дочернего элемента MappingFragment.

Дочерний элемент ModificationFunctionMapping может применяться для сопоставления функций вставки, обновления или удаления типов сущностей с хранимыми процедурами в базе данных.

Элемент EntityTypeMapping может иметь следующие дочерние элементы.

Bb399272.note(ru-ru,VS.100).gifПримечание
Элементы MappingFragment и ModificationFunctionMapping не могут одновременно быть дочерними элементами элемента EntityTypeMapping.

Bb399272.note(ru-ru,VS.100).gifПримечание
Элементы ScalarProperty и Condition могут быть дочерними элементами элемента EntityTypeMapping только тогда, когда этот элемент используется в элементе FunctionImportMapping.

Применимые атрибуты

В следующей таблице описываются атрибуты, которые можно применить к элементу EntityTypeMapping.

Имя атрибута Необходимо Значение

TypeName

Да

Имя с указанием пространства имен типа сущности концептуальной модели, с которым выполняется сопоставление.

Если тип является абстрактным или производным типом, значение должно быть равно IsOfType(Namespace-qualified_type_name).

Пример

В следующем примере показан элемент EntitySetMapping с двумя дочерними элементами EntityTypeMapping. В первом элементе EntityTypeMapping тип сущности SchoolModel.Person сопоставляется с таблицей Person. Во втором элементе EntityTypeMapping функциональность обновления типа SchoolModel.Person сопоставляется с хранимой процедурой UpdatePerson в базе данных.

<EntitySetMapping Name="People">
  <EntityTypeMapping TypeName="SchoolModel.Person">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="LastName" ColumnName="LastName" />
      <ScalarProperty Name="FirstName" ColumnName="FirstName" />
      <ScalarProperty Name="HireDate" ColumnName="HireDate" />
      <ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
    </MappingFragment>
  </EntityTypeMapping>
  <EntityTypeMapping TypeName="SchoolModel.Person">
    <ModificationFunctionMapping>
      <UpdateFunction FunctionName="SchoolModel.Store.UpdatePerson">
        <ScalarProperty Name="EnrollmentDate" ParameterName="EnrollmentDate" 
                        Version="Current" />
        <ScalarProperty Name="HireDate" ParameterName="HireDate" 
                        Version="Current" />
        <ScalarProperty Name="FirstName" ParameterName="FirstName" 
                        Version="Current" />
        <ScalarProperty Name="LastName" ParameterName="LastName" 
                        Version="Current" />
        <ScalarProperty Name="PersonID" ParameterName="PersonID" 
                        Version="Current" />
      </UpdateFunction>
    </ModificationFunctionMapping>
  </EntityTypeMapping>
</EntitySetMapping>

Пример

В следующем примере показано сопоставление иерархии типа, в которой корневой тип является абстрактным. Обратите внимание на использование синтаксиса IsOfType для атрибутов TypeName.

<EntitySetMapping Name="People">
  <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="FirstName" ColumnName="FirstName" />
      <ScalarProperty Name="LastName" ColumnName="LastName" />
    </MappingFragment>
  </EntityTypeMapping>
  <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="HireDate" ColumnName="HireDate" />
      <Condition ColumnName="HireDate" IsNull="false" />
      <Condition ColumnName="EnrollmentDate" IsNull="true" />
    </MappingFragment>
  </EntityTypeMapping>
  <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
    <MappingFragment StoreEntitySet="Person">
      <ScalarProperty Name="PersonID" ColumnName="PersonID" />
      <ScalarProperty Name="EnrollmentDate" 
                      ColumnName="EnrollmentDate" />
      <Condition ColumnName="EnrollmentDate" IsNull="false" />
      <Condition ColumnName="HireDate" IsNull="true" />
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

См. также

Основные понятия

Спецификация языка CSDL
Спецификация языка SSDL

Другие ресурсы

Моделирование и сопоставление (платформа Entity Framework)