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

Cc716778.note(de-de,VS.100).gifHinweis:
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.

Cc716778.note(de-de,VS.100).gifHinweis:
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:

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