Элемент EntityTypeMapping (язык MSL)
Элемент EntityTypeMapping в языке MSL определяет сопоставление между типом сущности концептуальной модели и таблицами или представлениями в основной базе данных. Сведения о типах сущностей концептуальной модели и базовых таблицах или представлениях базы данных см. в разделах Элемент EntityType (язык CSDL) и Элемент EntitySet (язык SSDL). Тип сущности концептуальной модели, с которым выполняется сопоставление, определяется атрибутом TypeName элемента EntityTypeMapping. Таблица или представление, с которыми выполняется сопоставление, задается атрибутом StoreEntitySet дочернего элемента MappingFragment.
Дочерний элемент ModificationFunctionMapping может применяться для сопоставления функций вставки, обновления или удаления типов сущностей с хранимыми процедурами в базе данных.
Элемент EntityTypeMapping может иметь следующие дочерние элементы.
MappingFragment (ноль и более)
ModificationFunctionMapping (ноль или один)
Примечание |
---|
Элементы MappingFragment и ModificationFunctionMapping не могут одновременно быть дочерними элементами элемента EntityTypeMapping. |
Примечание |
---|
Элементы ScalarProperty и Condition могут быть дочерними элементами элемента EntityTypeMapping только тогда, когда этот элемент используется в элементе FunctionImportMapping. |
Применимые атрибуты
В следующей таблице описываются атрибуты, которые можно применить к элементу EntityTypeMapping.
Имя атрибута | Необходимо | Значение |
---|---|---|
TypeName |
Да |
Имя с указанием пространства имен типа сущности концептуальной модели, с которым выполняется сопоставление. Если тип является абстрактным или производным типом, значение должно быть равно |
Пример
В следующем примере показан элемент 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