ModificationFunctionMapping-Element (MSL)
Das ModificationFunctionMapping-Element der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet die Insert-, Update- und Delete-Funktionen eines Entitätstyps des konzeptionellen Modells gespeicherten Prozeduren in der zugrunde liegenden Datenbank zu. Das ModificationFunctionMapping-Element kann auch die Insert- und Delete-Funktionen für m:n-Zuordnungen im konzeptionellen Modell gespeicherten Prozeduren in der zugrunde liegenden Datenbank zuordnen. Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden. Weitere Informationen finden Sie unter Function-Element (SSDL).
Hinweis: |
---|
Wenn Sie nicht alle drei Einfüge-, Aktualisierungs- und Löschvorgänge eines Entitätstyps gespeicherten Prozeduren zuordnen, schlagen die nicht zugeordneten Vorgänge bei der Ausführung zur Laufzeit fehl, und es wird eine Ausnahme des Typs UpdateException ausgelöst. |
Hinweis: |
---|
Wenn die Änderungsfunktionen für eine Entität in einer Vererbungshierarchie gespeicherten Prozeduren zugeordnet werden, dann müssen die Änderungsfunktionen für alle Typen in der Hierarchie gespeicherten Prozeduren zugeordnet werden. |
Das ModificationFunctionMapping-Element kann ein untergeordnetes Element des EntityTypeMapping-Elements oder des AssociationSetMapping-Elements sein.
Das ModificationFunctionMapping-Element kann die folgenden untergeordneten Elemente aufweisen:
DeleteFunction (kein (null) oder ein Element)
InsertFunction (kein (null) oder ein Element)
UpdateFunction (kein (null) oder ein Element)
Auf das ModificationFunctionMapping-Element sind keine Attribute anwendbar.
Beispiel
Im folgenden Beispiel wird die Zuordnung des People-Entitätssatzes im Modell "School" gezeigt. Zusätzlich zur Spaltenzuordnung für den Person-Entitätstyp wird die Zuordnung der Insert-, Update- und Delete-Funktionen des Person-Typs gezeigt. Die Funktionen, denen sie zugeordnet werden, sind im Speichermodell deklariert.
<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>
Beispiel
Im folgenden Beispiel wird gezeigt, wie der CourseInstructor-Zuordnungssatz im Modell "School" zugeordnet wird. Zusätzlich zur Spaltenzuordnung für die CourseInstructor-Zuordnung wird die Zuordnung der Insert- und Delete-Funktionen der CourseInstructor-Zuordnung gezeigt. Die Funktionen, denen sie zugeordnet werden, sind im Speichermodell deklariert.
<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>
Siehe auch
Aufgaben
Gewusst wie: Definieren eines Modells mit einer gespeicherten Prozedur (Entity Framework)
Weitere Ressourcen
Walkthrough: Mapping an Entity to Stored Procedures
CSDL-, SSDL- und MSL-Spezifikationen