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


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

Элемент InsertFunction в языке MSL сопоставляет функцию вставки типа сущности или ассоциации в концептуальной модели с хранимой процедурой в основной базе данных. Хранимые процедуры, с которыми сопоставляются функции изменения, должны объявляться в модели хранения. Дополнительные сведения см. в разделе Элемент Function (язык SSDL).

Cc716749.note(ru-ru,VS.100).gifПримечание
Если не выполнено сопоставление всех трех операций (вставки, обновления и удаления типов сущностей) хранимым процедурам, то несопоставленные операции выдадут ошибки во время выполнения и будет вызвано исключение UpdateException.

Элемент InsertFunction может быть дочерним элементом ModificationFunctionMapping и применяться к элементу EntityTypeMapping или AssociationSetMapping.

Элемент InsertFunction, применяемый к EntityTypeMapping

При применении к элементу EntityTypeMapping элемент InsertFunction сопоставляет функцию вставки типа сущности в концептуальной модели с хранимой процедурой.

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

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

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

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

FunctionName

Да

Имя хранимой процедуры (с указанием пространства имен), с которой сопоставляется функция вставки. Хранимая процедура должна объявляться в модели хранения.

RowsAffectedParameter

Нет

Имя выходного параметра, возвращающего количество обработанных строк.

Пример

Следующий пример построен на основе модели School. В нем показано использование элемента InsertFunction для сопоставления функции вставки типа сущности Person с хранимой процедурой InsertPerson. Хранимая процедура InsertPerson объявляется в модели хранения.

<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>

Элемент InsertFunction, применяемый к AssociationSetMapping

При применении к элементу AssociationSetMapping элемент InsertFunction сопоставляет функцию вставки ассоциации в концептуальной модели с хранимой процедурой.

Элемент InsertFunction может иметь следующие дочерние элементы во время применения к элементу AssociationSetMapping.

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

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

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

FunctionName

Да

Имя хранимой процедуры (с указанием пространства имен), с которой сопоставляется функция вставки. Хранимая процедура должна объявляться в модели хранения.

RowsAffectedParameter

Нет

Имя выходного параметра, возвращающего количество обработанных строк.

Пример

Следующий пример построен на основе модели School. В нем показано использование элемента InsertFunction для сопоставления функции вставки ассоциации CourseInstructor с хранимой процедурой InsertCourseInstructor. Хранимая процедура InsertCourseInstructor объявляется в модели хранения.

<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>

См. также

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

Спецификации языка CSDL, SSDL и MSL
Моделирование и сопоставление (платформа Entity Framework)