InsertFunction 項目 (MSL)
對應規格語言 (MSL) 中的 InsertFunction 項目會將概念模型中的實體類型或關聯的插入函式對應至基礎資料庫中的預存程序。 修改函式所對應的預存程序必須在儲存模型中宣告。 如需詳細資訊,請參閱Function 項目 (SSDL)。
注意: |
---|
如果沒有將實體類型的 [插入]、[更新] 或 [刪除] 三種作業都對應到預存程序,則若在執行階段中執行未對應的作業,且擲回 UpdateException,未對應的作業會失敗。 |
InsertFunction 項目可以是 ModificationFunctionMapping 項目的子項目,且可以套用至 EntityTypeMapping 項目或 AssociationSetMapping 項目。
套用至 EntityTypeMapping 的 InsertFunction
當 InsertFunction 項目套用至 EntityTypeMapping 項目時,前者項目會將概念模型中實體類型的插入函式對應至預存程序。
將 InsertFunction 項目套用至 EntityTypeMapping 項目時,前者項目可以有下列子項目:
AssociationEnd (零或多個)
ComplexProperty (零或多個)
ResultBinding (零或一個)
ScarlarProperty (零或多個)
適用屬性
下表描述的屬性可套用至 InsertFunction 項目 (在該項目套用至 EntityTypeMapping 項目時)。
屬性名稱 | 必要 | 值 |
---|---|---|
FunctionName |
是 |
插入函式所對應至之預存程序的命名空間限定名稱。 預存程序必須已宣告於儲存模型中。 |
RowsAffectedParameter |
否 |
會傳回受影響之資料列數的輸出參數名稱。 |
範例
下列範例是以 School 模型為基礎,顯示用來將 Person 實體類型的插入函式對應至 InsertPerson 預存程序的 InsertFunction 項目。 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>
套用至 AssociationSetMapping 的 InsertFunction
當 InsertFunction 項目套用至 AssociationSetMapping 項目時,前者項目會將概念模型中之關聯的插入函式對應至預存程序。
將 InsertFunction 項目套用至 AssociationSetMapping 項目時,前者項目可以有下列子項目:
適用屬性
下表描述的屬性可套用至 InsertFunction 項目 (當它已套用至 AssociationSetMapping 項目時)。
屬性名稱 | 必要 | 值 |
---|---|---|
FunctionName |
是 |
插入函式所對應至之預存程序的命名空間限定名稱。 預存程序必須已宣告於儲存模型中。 |
RowsAffectedParameter |
否 |
會傳回受影響之資料列數的輸出參數名稱。 |
範例
下列範例是以 School 模型為基礎,顯示用來將 CourseInstructor 關聯的插入函式對應至 InsertCourseInstructor 預存程序的 InsertFunction 項目。 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>