Elemento ModificationFunctionMapping (MSL)

L'elemento ModificationFunctionMapping in MSL (Mapping Specification Language) consente di eseguire il mapping delle funzioni di inserimento, aggiornamento ed eliminazione di un tipo di entità del modello concettuale a stored procedure nel database sottostante. L'elemento ModificationFunctionMapping può anche eseguire il mapping delle funzioni di inserimento ed eliminazione di associazioni molti-a-molti nel modello concettuale alle stored procedure nel database sottostante. Le stored procedure a cui le funzioni di modifica sono mappate devono essere dichiarate nel modello di archiviazione. Per ulteriori informazioni, vedere Elemento Function (SSDL).

Cc716778.note(it-it,VS.100).gifNota:
Se non si esegue il mapping di tutte e tre le operazioni di inserimento, aggiornamento ed eliminazione di un tipo di entità alle stored procedure, le operazioni non mappate avranno esito negativo se eseguite in fase di esecuzione; verrà inoltre generata un'eccezione UpdateException.

Cc716778.note(it-it,VS.100).gifNota:
Se esiste un mapping tra le funzioni di modifica per un'entità in una gerarchia di ereditarietà e stored procedure, è necessario eseguire il mapping delle funzioni di modifica per tutti i tipi nella gerarchia a stored procedure.

L'elemento ModificationFunctionMapping può essere un elemento figlio dell'elemento EntityTypeMapping o dell'elemento AssociationSetMapping.

Nell'elemento ModificationFunctionMapping possono essere inclusi gli elementi figlio seguenti:

All'elemento ModificationFunctionMapping non possono essere applicati attributi.

Esempio

Nell'esempio riportato di seguito viene illustrato il mapping per il set di entità People nel modello School. Oltre al mapping delle colonne per il tipo di entità Person, viene mostrato il mapping delle funzioni di inserimento, aggiornamento ed eliminazione del tipo Person. Le funzioni a cui viene eseguito il mapping vengono dichiarate nel modello di archiviazione.

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

Esempio

Nell'esempio riportato di seguito viene illustrato il mapping per il set di associazioni CourseInstructor nel modello School. Oltre al mapping delle colonne l'associazione CourseInstructor, viene mostrato il mapping delle funzioni di inserimento ed eliminazione dell'associazione CourseInstructor. Le funzioni a cui viene eseguito il mapping vengono dichiarate nel modello di archiviazione.

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

Vedere anche

Attività

Procedura: definire un modello con una stored procedure (Entity Framework)

Altre risorse

Walkthrough: Mapping an Entity to Stored Procedures
Specifiche CSDL, SSDL e MSL