Элемент ModificationFunctionMapping (язык MSL)
Элемент ModificationFunctionMapping в языке MSL сопоставляет функции вставки, обновления и удаления типа сущности концептуальной модели с хранимыми процедурами в основной базе данных. Элемент ModificationFunctionMapping также может сопоставлять функции вставки и удаления ассоциаций «многие ко многим» в концептуальной модели с хранимыми процедурами в основной базе данных. Хранимые процедуры, с которыми сопоставляются функции изменения, должны объявляться в модели хранения. Дополнительные сведения см. в разделе Элемент Function (язык SSDL).
Примечание |
---|
Если не выполнено сопоставление всех трех операций (вставки, обновления и удаления типов сущностей) хранимым процедурам, то несопоставленные операции выдадут ошибки во время выполнения и будет вызвано исключение UpdateException. |
Примечание |
---|
Если функции преобразования для одной сущности в иерархии наследования сопоставляются с хранимыми процедурами, то функции преобразования всех типов в иерархии должны быть сопоставлены с хранимыми процедурами. |
Элемент ModificationFunctionMapping может быть дочерним элементом элемента EntityTypeMapping или элемента AssociationSetMapping.
Элемент ModificationFunctionMapping может иметь следующие дочерние элементы.
DeleteFunction (ноль или один)
InsertFunction (ноль или один)
UpdateFunction (ноль или один)
К элементу ModificationFunctionMapping не применим ни один атрибут.
Пример
В следующем примере показано сопоставление набора сущностей для набора сущностей People в модели School. В дополнение к сопоставлению столбцов типа сущности Person показано сопоставление функций вставки, обновления и удаления типа Person. Функции, с которыми выполняется сопоставление, объявляются в модели хранения.
<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>
<InsertFunction FunctionName="SchoolModel.Store.InsertPerson">
<ScalarProperty Name="EnrollmentDate"
ParameterName="EnrollmentDate" />
<ScalarProperty Name="HireDate" ParameterName="HireDate" />
<ScalarProperty Name="FirstName" ParameterName="FirstName" />
<ScalarProperty Name="LastName" ParameterName="LastName" />
<ResultBinding Name="PersonID" ColumnName="NewPersonID" />
</InsertFunction>
<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>
<DeleteFunction FunctionName="SchoolModel.Store.DeletePerson">
<ScalarProperty Name="PersonID" ParameterName="PersonID" />
</DeleteFunction>
</ModificationFunctionMapping>
</EntityTypeMapping>
</EntitySetMapping>
Пример
В следующем примере показано сопоставление набора ассоциаций для набора ассоциаций CourseInstructor в модели School. В дополнение к сопоставлению столбцов для ассоциации CourseInstructor показано сопоставление функций вставки и удаления ассоциации CourseInstructor. Функции, с которыми выполняется сопоставление, объявляются в модели хранения.
<AssociationSetMapping Name="CourseInstructor"
TypeName="SchoolModel.CourseInstructor"
StoreEntitySet="CourseInstructor">
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ColumnName="PersonID" />
</EndProperty>
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ColumnName="CourseID" />
</EndProperty>
<ModificationFunctionMapping>
<InsertFunction FunctionName="SchoolModel.Store.InsertCourseInstructor" >
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</InsertFunction>
<DeleteFunction FunctionName="SchoolModel.Store.DeleteCourseInstructor">
<EndProperty Name="Course">
<ScalarProperty Name="CourseID" ParameterName="courseId"/>
</EndProperty>
<EndProperty Name="Person">
<ScalarProperty Name="PersonID" ParameterName="instructorId"/>
</EndProperty>
</DeleteFunction>
</ModificationFunctionMapping>
</AssociationSetMapping>
См. также
Задачи
Как определить модель с помощью хранимой процедуры (платформа Entity Framework)
Другие ресурсы
Walkthrough: Mapping an Entity to Stored Procedures
Спецификации языка CSDL, SSDL и MSL