MSL-SpezifikationMSL Specification

Bei der Mapping-Spezifikationssprache (MSL) handelt es sich um eine XML-basierte Sprache, die die Zuordnung zwischen dem konzeptionellen Modell und dem Speichermodell einer Entity Framework Anwendung beschreibt.Mapping specification language (MSL) is an XML-based language that describes the mapping between the conceptual model and storage model of an Entity Framework application.

In einer Entity Framework Anwendung werden die Mapping-Metadaten zur Buildzeit aus einer MSL-Datei (geschrieben in MSL) geladen.In an Entity Framework application, mapping metadata is loaded from an .msl file (written in MSL) at build time. Entity Framework verwendet zur Laufzeit Mapping-Metadaten, um Abfragen für das konzeptionelle Modell in Speicher spezifische Befehle zu übersetzen.Entity Framework uses mapping metadata at runtime to translate queries against the conceptual model to store-specific commands.

Der Entity Framework Designer (EF-Designer) speichert Zuordnungsinformationen in einer EDMX-Datei zur Entwurfszeit.The Entity Framework Designer (EF Designer) stores mapping information in an .edmx file at design time. Zur Buildzeit verwendet die Entity Designer Informationen in einer EDMX-Datei, um die MSL-Datei zu erstellen, die zur Laufzeit von Entity Framework benötigt wird.At build time, the Entity Designer uses information in an .edmx file to create the .msl file that is needed by Entity Framework at runtime

Namen aller konzeptionellen oder Speichermodelltypen, auf denen in MSL verwiesen wird, müssen mit dem jeweiligen Namespacenamen qualifiziert werden.Names of all conceptual or storage model types that are referenced in MSL must be qualified by their respective namespace names. Weitere Informationen zum Namespace Namen des konzeptionellen Modells finden Sie unter CSDL-Spezifikation.For information about the conceptual model namespace name, see CSDL Specification. Weitere Informationen zum Namespace Namen des Speicher Modells finden Sie unter SSDL-Spezifikation.For information about the storage model namespace name, see SSDL Specification.

MSL-Versionen unterscheiden sich von XML-Namespaces.Versions of MSL are differentiated by XML namespaces.

MSL-VersionMSL Version XML-NamespaceXML Namespace
MSL v1MSL v1 urn: Schemas-Microsoft-com: Windows: Storage: Mapping: CSurn:schemas-microsoft-com:windows:storage:mapping:CS
MSL v2MSL v2 https://schemas.microsoft.com/ado/2008/09/mapping/cs
MSL v3MSL v3 https://schemas.microsoft.com/ado/2009/11/mapping/cs

Alias-Element (MSL)Alias Element (MSL)

Das Alias -Element in der Mapping-Spezifikationssprache (MSL) ist ein untergeordnetes Element des Mapping-Elements, das zum Definieren von Aliasen für das konzeptionelle Modell und die Namespaces des Speicher Modells verwendet wird.The Alias element in mapping specification language (MSL) is a child of the Mapping element that is used to define aliases for conceptual model and storage model namespaces. Namen aller konzeptionellen oder Speichermodelltypen, auf denen in MSL verwiesen wird, müssen mit dem jeweiligen Namespacenamen qualifiziert werden.Names of all conceptual or storage model types that are referenced in MSL must be qualified by their respective namespace names. Weitere Informationen zum Namespace Namen des konzeptionellen Modells finden Sie unter Schema-Element (CSDL).For information about the conceptual model namespace name, see Schema Element (CSDL). Weitere Informationen zum Namespace Namen des Speicher Modells finden Sie unter Schema-Element (SSDL).For information about the storage model namespace name, see Schema Element (SSDL).

Das Alias -Element darf keine untergeordneten Elemente aufweisen.The Alias element cannot have child elements.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das Alias -Element angewendet werden können.The table below describes the attributes that can be applied to the Alias element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
SchlüsselKey JaYes Der Alias für den Namespace, der durch das value -Attribut angegeben wird.The alias for the namespace that is specified by the Value attribute.
WertValue JaYes Der Namespace, für den der Wert des Schlüssel Elements ein Alias ist.The namespace for which the value of the Key element is an alias.

BeispielExample

Das folgende Beispiel zeigt ein Alias Element, das einen Alias für Typen definiert, die c im konzeptionellen Modell definiert sind.The following example shows an Alias element that defines an alias, c, for types that are defined in the conceptual model.

 <Mapping Space="C-S"
          xmlns="https://schemas.microsoft.com/ado/2009/11/mapping/cs">
   <Alias Key="c" Value="SchoolModel"/>
   <EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
                           CdmEntityContainer="SchoolModelEntities">
     <EntitySetMapping Name="Courses">
       <EntityTypeMapping TypeName="c.Course">
         <MappingFragment StoreEntitySet="Course">
           <ScalarProperty Name="CourseID" ColumnName="CourseID" />
           <ScalarProperty Name="Title" ColumnName="Title" />
           <ScalarProperty Name="Credits" ColumnName="Credits" />
           <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
         </MappingFragment>
       </EntityTypeMapping>
     </EntitySetMapping>
     <EntitySetMapping Name="Departments">
       <EntityTypeMapping TypeName="c.Department">
         <MappingFragment StoreEntitySet="Department">
           <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
           <ScalarProperty Name="Name" ColumnName="Name" />
           <ScalarProperty Name="Budget" ColumnName="Budget" />
           <ScalarProperty Name="StartDate" ColumnName="StartDate" />
           <ScalarProperty Name="Administrator" ColumnName="Administrator" />
         </MappingFragment>
       </EntityTypeMapping>
     </EntitySetMapping>
   </EntityContainerMapping>
 </Mapping>

AssociationEnd-Element (MSL)AssociationEnd Element (MSL)

Das AssociationEnd -Element in der Mapping-Spezifikationssprache (MSL) wird verwendet, wenn die Änderungs Funktionen eines Entitäts Typs im konzeptionellen Modell gespeicherten Prozeduren in der zugrunde liegenden Datenbank zugeordnet werden.The AssociationEnd element in mapping specification language (MSL) is used when the modification functions of an entity type in the conceptual model are mapped to stored procedures in the underlying database. Wenn eine gespeicherte Änderungs Prozedur einen Parameter annimmt, dessen Wert in einer Association-Eigenschaft enthalten ist, ordnet das AssociationEnd -Element den-Eigenschafts Wert dem-Parameter zu.If a modification stored procedure takes a parameter whose value is held in an association property, the AssociationEnd element maps the property value to the parameter. Weitere Informationen finden Sie im untenstehenden Beispiel.For more information, see the example below.

Weitere Informationen zum Mapping von Änderungs Funktionen von Entitäts Typen zu gespeicherten Prozeduren finden Sie unter ModificationFunctionMapping-Element (MSL) und Exemplarische Vorgehensweise: Mapping einer Entität zu gespeicherten Prozeduren.For more information about mapping modification functions of entity types to stored procedures, see ModificationFunctionMapping Element (MSL) and Walkthrough: Mapping an Entity to Stored Procedures.

Das AssociationEnd -Element kann die folgenden untergeordneten Elemente aufweisen:The AssociationEnd element can have the following child elements:

  • ScalarPropertyScalarProperty

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die für das AssociationEnd -Element anwendbar sind.The following table describes the attributes that are applicable to the AssociationEnd element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
AssociationSetAssociationSet JaYes Der Name der Zuordnung, die zugeordnet wird.The name of the association that is being mapped.
FromFrom JaYes Der Wert des FromRole -Attributs der Navigations Eigenschaft, die der zugeordneten Zuordnung entspricht.The value of the FromRole attribute of the navigation property that corresponds to the association being mapped. Weitere Informationen finden Sie unter NavigationProperty-Element (CSDL).For more information, see NavigationProperty Element (CSDL).
AnTo JaYes Der Wert des Attributs " Tor " der Navigations Eigenschaft, die der Zuordnung entspricht, die zugeordnet wird.The value of the ToRole attribute of the navigation property that corresponds to the association being mapped. Weitere Informationen finden Sie unter NavigationProperty-Element (CSDL).For more information, see NavigationProperty Element (CSDL).

BeispielExample

Betrachten Sie den folgenden Entitätstyp des konzeptionellen Modells:Consider the following conceptual model entity type:

 <EntityType Name="Course">
   <Key>
     <PropertyRef Name="CourseID" />
   </Key>
   <Property Type="Int32" Name="CourseID" Nullable="false" />
   <Property Type="String" Name="Title" Nullable="false" MaxLength="100"
             FixedLength="false" Unicode="true" />
   <Property Type="Int32" Name="Credits" Nullable="false" />
   <NavigationProperty Name="Department"
                       Relationship="SchoolModel.FK_Course_Department"
                       FromRole="Course" ToRole="Department" />
 </EntityType>

Betrachten Sie auch die folgende gespeicherte Prozedur:Also consider the following stored procedure:

 CREATE PROCEDURE [dbo].[UpdateCourse]
                                @CourseID int,
                                @Title nvarchar(50),
                                @Credits int,
                                @DepartmentID int
                                AS
                                UPDATE Course SET Title=@Title,
                                                              Credits=@Credits,
                                                              DepartmentID=@DepartmentID
                                WHERE CourseID=@CourseID;

Um die Aktualisierungs Funktion der Course Entität dieser gespeicherten Prozedur zuzuordnen, müssen Sie einen Wert für den DepartmentID -Parameter angeben.In order to map the update function of the Course entity to this stored procedure, you must supply a value to the DepartmentID parameter. Der Wert für DepartmentID entspricht keiner Eigenschaft des Entitätstyps; er ist vielmehr in einer unabhängigen Zuordnung enthalten, deren Zuordnung hier angezeigt wird:The value for DepartmentID does not correspond to a property on the entity type; it is contained in an independent association whose mapping is shown here:

 <AssociationSetMapping Name="FK_Course_Department"
                        TypeName="SchoolModel.FK_Course_Department"
                        StoreEntitySet="Course">
   <EndProperty Name="Course">
     <ScalarProperty Name="CourseID" ColumnName="CourseID" />
   </EndProperty>
   <EndProperty Name="Department">
     <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
   </EndProperty>
 </AssociationSetMapping>

Der folgende Code zeigt das AssociationEnd -Element, das verwendet wird, um die DepartmentID -Eigenschaft der FK- _ Kurs _ Abteilungs Zuordnung der gespeicherten Prozedur updatecourse zuzuordnen (in der die Update-Funktion des Course -Entitäts Typs zugeordnet ist):The following code shows the AssociationEnd element used to map the DepartmentID property of the FK_Course_Department association to the UpdateCourse stored procedure (to which the update function of the Course entity type is mapped):

 <EntitySetMapping Name="Courses">
   <EntityTypeMapping TypeName="SchoolModel.Course">
     <MappingFragment StoreEntitySet="Course">
       <ScalarProperty Name="Credits" ColumnName="Credits" />
       <ScalarProperty Name="Title" ColumnName="Title" />
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="SchoolModel.Course">
     <ModificationFunctionMapping>
       <UpdateFunction FunctionName="SchoolModel.Store.UpdateCourse">
         <AssociationEnd AssociationSet="FK_Course_Department"
                         From="Course" To="Department">
           <ScalarProperty Name="DepartmentID"
                           ParameterName="DepartmentID"
                           Version="Current" />
         </AssociationEnd>
         <ScalarProperty Name="Credits" ParameterName="Credits"
                         Version="Current" />
         <ScalarProperty Name="Title" ParameterName="Title"
                         Version="Current" />
         <ScalarProperty Name="CourseID" ParameterName="CourseID"
                         Version="Current" />
       </UpdateFunction>
     </ModificationFunctionMapping>
   </EntityTypeMapping>
 </EntitySetMapping>

AssociationSetMapping-Element (MSL)AssociationSetMapping Element (MSL)

Das AssociationSetMapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen einer Zuordnung im konzeptionellen Modell und den Tabellen Spalten in der zugrunde liegenden Datenbank.The AssociationSetMapping element in mapping specification language (MSL) defines the mapping between an association in the conceptual model and table columns in the underlying database.

Zuordnungen im konzeptionellen Modell sind Typen, deren Eigenschaften Primär- und Fremdschlüsselspalten in der zugrunde liegenden Datenbank darstellen.Associations in the conceptual model are types whose properties represent primary and foreign key columns in the underlying database. Das AssociationSetMapping -Element verwendet zwei EndProperty-Elemente, um die Zuordnungen zwischen Zuordnungstyp Eigenschaften und Spalten in der Datenbank zu definieren.The AssociationSetMapping element uses two EndProperty elements to define the mappings between association type properties and columns in the database. Sie können mit dem Condition-Element Bedingungen für diese Zuordnungen festlegen.You can place conditions on these mappings with the Condition element. Mit dem ModificationFunctionMapping-Element ordnen Sie Einfüge-, Update- und Löschfunktionen für Zuordnungen gespeicherten Prozeduren in der Datenbank zu.Map the insert, update, and delete functions for associations to stored procedures in the database with the ModificationFunctionMapping element. Definieren Sie schreibgeschützte Zuordnungen zwischen Zuordnungen und Tabellen Spalten, indem Sie eine Entity SQL Zeichenfolge in einem QueryView-Element verwenden.Define read-only mappings between associations and table columns by using an Entity SQL string in a QueryView element.

Hinweis

Wenn eine referenzielle Einschränkung für eine Zuordnung im konzeptionellen Modell definiert ist, muss die Zuordnung nicht mit einem AssociationSetMapping -Element zugeordnet werden.If a referential constraint is defined for an association in the conceptual model, the association does not need to be mapped with an AssociationSetMapping element. Wenn ein AssociationSetMapping -Element für eine Zuordnung vorhanden ist, die eine referenzielle Einschränkung aufweist, werden die im AssociationSetMapping -Element definierten Zuordnungen ignoriert.If an AssociationSetMapping element is present for an association that has a referential constraint, the mappings defined in the AssociationSetMapping element will be ignored. Weitere Informationen finden Sie unter referentialeinschränkungs-Element (CSDL).For more information, see ReferentialConstraint Element (CSDL).

Das AssociationSetMapping -Element kann die folgenden untergeordneten Elemente aufweisen.The AssociationSetMapping element can have the following child elements

  • QueryView (kein (null) oder ein Element)QueryView (zero or one)
  • EndProperty (kein (null) oder zwei Elemente)EndProperty (zero or two)
  • Condition (0 (null) oder mehr Elemente)Condition (zero or more)
  • ModificationFunctionMapping (kein (null) oder ein Element)ModificationFunctionMapping (zero or one)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das AssociationSetMapping -Element angewendet werden können.The following table describes the attributes that can be applied to the AssociationSetMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name des konzeptionellen Modell-Zuordnungssatzes, der zugeordnet wird.The name of the conceptual model association set that is being mapped.
TypeNameTypeName NeinNo Der mit einem Namespace qualifizierte Name des konzeptionellen Modell-Zuordnungstyps, der zugeordnet wird.The namespace-qualified name of the conceptual model association type that is being mapped.
StoreEntitySetStoreEntitySet NeinNo Der Name der Tabelle, die zugeordnet wird.The name of the table that is being mapped.

BeispielExample

Das folgende Beispiel zeigt ein AssociationSetMapping -Element, in dem der im konzeptionellen Modell festgelegte FK- _ Kurs _ Abteilungs Verbund der Course -Tabelle in der-Datenbank zugeordnet wird.The following example shows an AssociationSetMapping element in which the FK_Course_Department association set in the conceptual model is mapped to the Course table in the database. Zuordnungen zwischen Zuordnungstyp Eigenschaften und Tabellen Spalten werden in untergeordneten EndProperty -Elementen angegeben.Mappings between association type properties and table columns are specified in child EndProperty elements.

 <AssociationSetMapping Name="FK_Course_Department"
                        TypeName="SchoolModel.FK_Course_Department"
                        StoreEntitySet="Course">
   <EndProperty Name="Department">
     <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
   </EndProperty>
   <EndProperty Name="Course">
     <ScalarProperty Name="CourseID" ColumnName="CourseID" />
   </EndProperty>
 </AssociationSetMapping>

ComplexProperty-Element (MSL)ComplexProperty Element (MSL)

Ein ComplexProperty -Element in der Mapping-Spezifikationssprache (MSL) definiert die Zuordnung zwischen einer komplexen Typeigenschaft in einem Entitätstyp des konzeptionellen Modells und Tabellen Spalten in der zugrunde liegenden Datenbank.A ComplexProperty element in mapping specification language (MSL) defines the mapping between a complex type property on a conceptual model entity type and table columns in the underlying database. Die Zuordnungen zu Eigenschaftenspalten sind in einem untergeordneten ScalarProperty-Element angegeben.The property-column mappings are specified in child ScalarProperty elements.

Das complexType -Eigenschafts Element kann die folgenden untergeordneten Elemente aufweisen:The ComplexType property element can have the following child elements:

  • ScalarProperty (0 (null) oder mehr)ScalarProperty (zero or more)
  • ComplexProperty (0 (null) oder mehr)ComplexProperty (zero or more)
  • ComplextTypeMapping (kein (null) oder mehrere Elemente)ComplextTypeMapping (zero or more)
  • Condition (0 (null) oder mehr Elemente)Condition (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das ComplexProperty -Element anwendbar sind:The following table describes the attributes that are applicable to the ComplexProperty element:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name der komplexen Eigenschaft eines Entitätstyps im konzeptionellen Modell, die zugeordnet wird.The name of the complex property of an entity type in the conceptual model that is being mapped.
TypeNameTypeName NeinNo Der mit einem Namespace qualifizierte Name des Eigenschaftentyps im konzeptionellen Modell.The namespace-qualified name of the conceptual model property type.

BeispielExample

Das folgende Beispiel beruht auf dem School-Modell.The following example is based on the School model. Dem konzeptionellen Modell wurde der folgende komplexe Typ hinzugefügt:The following complex type has been added to the conceptual model:

 <ComplexType Name="FullName">
   <Property Type="String" Name="LastName"
             Nullable="false" MaxLength="50"
             FixedLength="false" Unicode="true" />
   <Property Type="String" Name="FirstName"
             Nullable="false" MaxLength="50"
             FixedLength="false" Unicode="true" />
 </ComplexType>

Die Eigenschaften " LastName " und " FirstName " des Entitäts Typs " Person " wurden durch eine komplexe Eigenschaft namens "Name" ersetzt:The LastName and FirstName properties of the Person entity type have been replaced with one complex property, Name:

 <EntityType Name="Person">
   <Key>
     <PropertyRef Name="PersonID" />
   </Key>
   <Property Name="PersonID" Type="Int32" Nullable="false"
             annotation:StoreGeneratedPattern="Identity" />
   <Property Name="HireDate" Type="DateTime" />
   <Property Name="EnrollmentDate" Type="DateTime" />
   <Property Name="Name" Type="SchoolModel.FullName" Nullable="false" />
 </EntityType>

Das folgende MSL zeigt das ComplexProperty -Element, das verwendet wird, um die Name -Eigenschaft Spalten in der zugrunde liegenden Datenbank zuzuordnen:The following MSL shows the ComplexProperty element used to map the Name property to columns in the underlying database:

 <EntitySetMapping Name="People">
   <EntityTypeMapping TypeName="SchoolModel.Person">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="HireDate" ColumnName="HireDate" />
       <ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" />
       <ComplexProperty Name="Name" TypeName="SchoolModel.FullName">
         <ScalarProperty Name="FirstName" ColumnName="FirstName" />
         <ScalarProperty Name="LastName" ColumnName="LastName" />  
       </ComplexProperty>
     </MappingFragment>
   </EntityTypeMapping>
 </EntitySetMapping>

ComplexTypeMapping-Element (MSL)ComplexTypeMapping Element (MSL)

Das complextypemapping -Element in der Mapping-Spezifikationssprache (MSL) ist ein untergeordnetes Element des resultmapping-Elements und definiert die Zuordnung zwischen einem Funktions Import im konzeptionellen Modell und einer gespeicherten Prozedur in der zugrunde liegenden Datenbank, wenn Folgendes zutrifft:The ComplexTypeMapping element in mapping specification language (MSL) is a child of the ResultMapping element and defines the mapping between a function import in the conceptual model and a stored procedure in the underlying database when the following are true:

  • Der Funktionsimport gibt einen konzeptionellen komplexen Typ zurück.The function import returns a conceptual complex type.
  • Die Namen der Spalten, die von der gespeicherten Prozedur zurückgegeben werden, entsprechen nicht genau den Namen der Eigenschaften für den komplexen Typ.The names of the columns returned by the stored procedure do not exactly match the names of the properties on the complex type.

Standardmäßig basiert die Zuordnung der von einer gespeicherten Prozedur zurückgegebenen Spalten zu einem komplexen Typ auf den Spalten- und Eigenschaftennamen.By default, the mapping between the columns returned by a stored procedure and a complex type is based on column and property names. Wenn Spaltennamen nicht exakt mit Eigenschaftsnamen übereinstimmen, müssen Sie das complextypemapping -Element verwenden, um die Zuordnung zu definieren.If column names do not exactly match property names, you must use the ComplexTypeMapping element to define the mapping. Ein Beispiel für die Standard Zuordnung finden Sie unter FunctionImportMapping-Element (MSL).For an example of the default mapping, see FunctionImportMapping Element (MSL).

Das complextypemapping -Element kann die folgenden untergeordneten Elemente aufweisen:The ComplexTypeMapping element can have the following child elements:

  • ScalarProperty (0 (null) oder mehr)ScalarProperty (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das complextypemapping -Element anwendbar sind.The following table describes the attributes that are applicable to the ComplexTypeMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
TypeNameTypeName JaYes Der namespacequalifizierte Name des komplexen Typs, der zugeordnet wird.The namespace-qualified name of the complex type that is being mapped.

BeispielExample

Sehen Sie sich die folgende gespeicherte Prozedur an:Consider the following stored procedure:

 CREATE PROCEDURE [dbo].[GetGrades]
             @student_Id int
             AS
             SELECT     EnrollmentID as enroll_id,
                                                                             Grade as grade,
                                                                             CourseID as course_id,
                                                                             StudentID as student_id
                                               FROM dbo.StudentGrade
             WHERE StudentID = @student_Id

Betrachten Sie auch den folgenden komplexen Typ des konzeptionellen Modells:Also consider the following conceptual model complex type:

 <ComplexType Name="GradeInfo">
   <Property Type="Int32" Name="EnrollmentID" Nullable="false" />
   <Property Type="Decimal" Name="Grade" Nullable="true"
             Precision="3" Scale="2" />
   <Property Type="Int32" Name="CourseID" Nullable="false" />
   <Property Type="Int32" Name="StudentID" Nullable="false" />
 </ComplexType>

Um einen Funktions Import zu erstellen, der Instanzen des vorherigen komplexen Typs zurückgibt, muss die Zuordnung zwischen den Spalten, die von der gespeicherten Prozedur zurückgegeben werden, und dem Entitätstyp in einem complextypemapping -Element definiert werden:In order to create a function import that returns instances of the previous complex type, the mapping between the columns returned by the stored procedure and the entity type must be defined in a ComplexTypeMapping element:

 <FunctionImportMapping FunctionImportName="GetGrades"
                        FunctionName="SchoolModel.Store.GetGrades" >
   <ResultMapping>
     <ComplexTypeMapping TypeName="SchoolModel.GradeInfo">
       <ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
       <ScalarProperty Name="CourseID" ColumnName="course_id"/>
       <ScalarProperty Name="StudentID" ColumnName="student_id"/>
       <ScalarProperty Name="Grade" ColumnName="grade"/>
     </ComplexTypeMapping>
   </ResultMapping>
 </FunctionImportMapping>

Condition-Element (MSL)Condition Element (MSL)

Das Condition -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet Bedingungen für Zuordnungen zwischen dem konzeptionellen Modell und der zugrunde liegenden Datenbank.The Condition element in mapping specification language (MSL) places conditions on mappings between the conceptual model and the underlying database. Die Zuordnung, die in einem XML-Knoten definiert ist, ist gültig, wenn alle Bedingungen, die in den untergeordneten Bedingungs Elementen angegeben sind, erfüllt werden.The mapping that is defined within an XML node is valid if all conditions, as specified in child Condition elements, are met. Andernfalls ist die Zuordnung ungültig.Otherwise, the mapping is not valid. Wenn ein MappingFragment-Element z. b. ein oder mehrere unter geordnete Bedingungs Elemente enthält, ist die im Knoten MappingFragment definierte Zuordnung nur gültig, wenn alle Bedingungen der untergeordneten Bedingungs Elemente erfüllt sind.For example, if a MappingFragment element contains one or more Condition child elements, the mapping defined within the MappingFragment node will only be valid if all the conditions of the child Condition elements are met.

Jede Bedingung kann entweder auf einen Namen (den Namen einer Entitäts Eigenschaft des konzeptionellen Modells, der durch das Name -Attribut festgelegt ist) oder auf einen ColumnName (der Name einer Spalte in der Datenbank, die durch das ColumnName -Attribut angegeben ist) angewendet werden.Each condition can apply to either a Name (the name of a conceptual model entity property, specified by the Name attribute), or a ColumnName (the name of a column in the database, specified by the ColumnName attribute). Wenn das Name -Attribut festgelegt ist, wird die Bedingung anhand eines Entitäts Eigenschafts Werts überprüft.When the Name attribute is set, the condition is checked against an entity property value. Wenn das ColumnName -Attribut festgelegt ist, wird die Bedingung anhand eines Spaltenwerts überprüft.When the ColumnName attribute is set, the condition is checked against a column value. Nur eines der Attribute " Name " oder " ColumnName " kann in einem Condition -Element angegeben werden.Only one of the Name or ColumnName attribute can be specified in a Condition element.

Hinweis

Wenn das Condition -Element innerhalb eines FunctionImportMapping-Elements verwendet wird, ist nur das Name -Attribut anwendbar.When the Condition element is used within a FunctionImportMapping element, only the Name attribute is not applicable.

Das Condition -Element kann ein untergeordnetes Element der folgenden Elemente sein:The Condition element can be a child of the following elements:

  • AssociationSetMappingAssociationSetMapping
  • ComplexPropertyComplexProperty
  • EntitySetMappingEntitySetMapping
  • MappingFragmentMappingFragment
  • EntityTypeMappingEntityTypeMapping

Das Condition -Element kann keine untergeordneten Elemente aufweisen.The Condition element can have no child elements.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die für das Condition -Element anwendbar sind:The following table describes the attributes that are applicable to the Condition element:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
ColumnNameColumnName NeinNo Der Name der Tabellenspalte, deren Wert zur Auswertung der Bedingung verwendet wird.The name of the table column whose value is used to evaluate the condition.
IsNullIsNull NeinNo True und False.True or False. Wenn der Wert true und der Spaltenwert nullist, oder wenn der Wert false ist und der Spaltenwert nicht nullist, ist die Bedingung true.If the value is True and the column value is null, or if the value is False and the column value is not null, the condition is true. Andernfalls ist die Bedingung nicht erfüllt (false).Otherwise, the condition is false.
Die Attribute " IsNull " und " value " können nicht gleichzeitig verwendet werden.The IsNull and Value attributes cannot be used at the same time.
WertValue NeinNo Der Wert, mit dem der Spaltenwert verglichen werden soll.The value with which the column value is compared. Wenn die Werte gleich sind, wird die Bedingung erfüllt (true).If the values are the same, the condition is true. Andernfalls ist die Bedingung nicht erfüllt (false).Otherwise, the condition is false.
Die Attribute " IsNull " und " value " können nicht gleichzeitig verwendet werden.The IsNull and Value attributes cannot be used at the same time.
NameName NeinNo Der Name der Entitätseigenschaft im konzeptionellen Modell, deren Wert zur Auswertung der Bedingung verwendet wird.The name of the conceptual model entity property whose value is used to evaluate the condition.
Dieses Attribut ist nicht anwendbar, wenn das Condition -Element innerhalb eines FunctionImportMapping-Elements verwendet wird.This attribute is not applicable if the Condition element is used within a FunctionImportMapping element.

BeispielExample

Das folgende Beispiel zeigt Bedingungs Elemente als untergeordnete Elemente der MappingFragment -Elemente.The following example shows Condition elements as children of MappingFragment elements. Wenn HireDate nicht NULL ist und " registrimentdate " den Wert NULL hat, werden Daten zwischen dem Typ " SchoolModel. Instructor " und den Spalten PersonID und HireDate der Person -Tabelle zugeordnet.When HireDate is not null and EnrollmentDate is null, data is mapped between the SchoolModel.Instructor type and the PersonID and HireDate columns of the Person table. Wenn registrimentdate nicht NULL und HireDate den Wert NULL hat, werden Daten zwischen dem Typ SchoolModel. Student und den Spalten PersonID und Registrierung der Person -Tabelle zugeordnet.When EnrollmentDate is not null and HireDate is null, data is mapped between the SchoolModel.Student type and the PersonID and Enrollment columns of the Person table.

 <EntitySetMapping Name="People">
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="FirstName" ColumnName="FirstName" />
       <ScalarProperty Name="LastName" ColumnName="LastName" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="HireDate" ColumnName="HireDate" />
       <Condition ColumnName="HireDate" IsNull="false" />
       <Condition ColumnName="EnrollmentDate" IsNull="true" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="EnrollmentDate"
                       ColumnName="EnrollmentDate" />
       <Condition ColumnName="EnrollmentDate" IsNull="false" />
       <Condition ColumnName="HireDate" IsNull="true" />
     </MappingFragment>
   </EntityTypeMapping>
 </EntitySetMapping>

DeleteFunction-Element (MSL)DeleteFunction Element (MSL)

Das DeleteFunction -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet die Delete-Funktion eines Entitäts Typs oder einer Zuordnung im konzeptionellen Modell einer gespeicherten Prozedur in der zugrunde liegenden Datenbank zu.The DeleteFunction element in mapping specification language (MSL) maps the delete function of an entity type or association in the conceptual model to a stored procedure in the underlying database. Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden.Stored procedures to which modification functions are mapped must be declared in the storage model. Weitere Informationen finden Sie unter Function-Element (SSDL).For more information, see Function Element (SSDL).

Hinweis

Wenn Sie nicht alle drei Einfüge-, Aktualisierungs-oder Löschvorgänge eines Entitäts Typs gespeicherten Prozeduren zuordnen, schlagen die nicht zugeordneten Vorgänge fehl, wenn Sie zur Laufzeit ausgeführt werden und eine Update Exception ausgelöst wird.If you do not map all three of the insert, update, or delete operations of a entity type to stored procedures, the unmapped operations will fail if executed at runtime and an UpdateException is thrown.

DeleteFunction angewendet auf EntityTypeMappingDeleteFunction Applied to EntityTypeMapping

Wenn das DeleteFunction -Element auf das EntityTypeMapping-Element angewendet wird, ordnet es die Delete-Funktion eines Entitäts Typs im konzeptionellen Modell einer gespeicherten Prozedur zu.When applied to the EntityTypeMapping element, the DeleteFunction element maps the delete function of an entity type in the conceptual model to a stored procedure.

Das DeleteFunction -Element kann die folgenden untergeordneten Elemente aufweisen, wenn es auf ein EntityTypeMapping -Element angewendet wird:The DeleteFunction element can have the following child elements when applied to an EntityTypeMapping element:

  • AssociationEnd (null (0) oder mehr)AssociationEnd (zero or more)
  • ComplexProperty (0 (null) oder mehr)ComplexProperty (zero or more)
  • ScalarProperty (null (0) oder mehr)ScarlarProperty (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das DeleteFunction -Element angewendet werden können, wenn es auf ein EntityTypeMapping -Element angewendet wird.The following table describes the attributes that can be applied to the DeleteFunction element when it is applied to an EntityTypeMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der gespeicherten Prozedur, der die Löschfunktion zugeordnet wird.The namespace-qualified name of the stored procedure to which the delete function is mapped. Die gespeicherte Prozedur muss im Speichermodell deklariert werden.The stored procedure must be declared in the storage model.
RowsaffectedparameterRowsAffectedParameter NeinNo Der Name des Ausgabeparameters, der die Anzahl der betroffenen Zeilen zurückgibt.The name of the output parameter that returns the number of rows affected.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt das DeleteFunction -Element, das die Delete-Funktion des Entitäts Typs Person der gespeicherten Prozedur DeletePerson entspricht.The following example is based on the School model and shows the DeleteFunction element mapping the delete function of the Person entity type to the DeletePerson stored procedure. Die gespeicherte Prozedur DeletePerson wird im Speichermodell deklariert.The DeletePerson stored procedure is declared in the storage model.

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

DeleteFunction angewendet auf AssociationSetMappingDeleteFunction Applied to AssociationSetMapping

Wenn das DeleteFunction -Element auf das AssociationSetMapping-Element angewendet wird, ordnet es die Delete-Funktion einer Zuordnung im konzeptionellen Modell einer gespeicherten Prozedur zu.When applied to the AssociationSetMapping element, the DeleteFunction element maps the delete function of an association in the conceptual model to a stored procedure.

Das DeleteFunction -Element kann die folgenden untergeordneten Elemente aufweisen, wenn es auf das AssociationSetMapping -Element angewendet wird:The DeleteFunction element can have the following child elements when applied to the AssociationSetMapping element:

  • EndPropertyEndProperty

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das DeleteFunction -Element angewendet werden können, wenn es auf das AssociationSetMapping -Element angewendet wird.The following table describes the attributes that can be applied to the DeleteFunction element when it is applied to the AssociationSetMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der gespeicherten Prozedur, der die Löschfunktion zugeordnet wird.The namespace-qualified name of the stored procedure to which the delete function is mapped. Die gespeicherte Prozedur muss im Speichermodell deklariert werden.The stored procedure must be declared in the storage model.
RowsaffectedparameterRowsAffectedParameter NeinNo Der Name des Ausgabeparameters, der die Anzahl der betroffenen Zeilen zurückgibt.The name of the output parameter that returns the number of rows affected.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt das DeleteFunction -Element, das verwendet wird, um die Delete-Funktion der " CourseInstructor "-Zuordnung der gespeicherten Prozedur " deletecourseinstructor " zuzuordnen.The following example is based on the School model and shows the DeleteFunction element used to map delete function of the CourseInstructor association to the DeleteCourseInstructor stored procedure. Die gespeicherte Prozedur deletecourseinstructor ist im Speichermodell deklariert.The DeleteCourseInstructor stored procedure is declared in the storage model.

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

EndProperty-Element (MSL)EndProperty Element (MSL)

Das EndProperty -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen einer End-oder einer Änderungs Funktion einer konzeptionellen Modell Zuordnung und der zugrunde liegenden Datenbank.The EndProperty element in mapping specification language (MSL) defines the mapping between an end or a modification function of a conceptual model association and the underlying database. Die Zuordnung zur Eigenschaftenspalte ist in einem untergeordneten ScalarProperty-Element angegeben.The property-column mapping is specified in a child ScalarProperty element.

Wenn ein EndProperty -Element verwendet wird, um die Zuordnung für das Ende einer konzeptionellen Modell Zuordnung zu definieren, ist es ein untergeordnetes Element eines AssociationSetMapping-Elements.When an EndProperty element is used to define the mapping for the end of a conceptual model association, it is a child of an AssociationSetMapping element. Wenn das EndProperty -Element verwendet wird, um die Zuordnung für eine Änderungs Funktion einer konzeptionellen Modell Zuordnung zu definieren, ist es ein untergeordnetes Element eines InsertFunction-Elements oder eines DeleteFunction-Elements.When the EndProperty element is used to define the mapping for a modification function of a conceptual model association, it is a child of an InsertFunction element or DeleteFunction element.

Das EndProperty -Element kann die folgenden untergeordneten Elemente aufweisen:The EndProperty element can have the following child elements:

  • ScalarProperty (0 (null) oder mehr)ScalarProperty (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die für das EndProperty -Element anwendbar sind:The following table describes the attributes that are applicable to the EndProperty element:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name des Zuordnungsendes, das zugeordnet wird.The name of the association end that is being mapped.

BeispielExample

Das folgende Beispiel zeigt ein AssociationSetMapping -Element, in dem die Zuordnung der FK- _ Kurs _ Abteilung im konzeptionellen Modell der Course -Tabelle in der-Datenbank zugeordnet ist.The following example shows an AssociationSetMapping element in which the FK_Course_Department association in the conceptual model is mapped to the Course table in the database. Zuordnungen zwischen Zuordnungstyp Eigenschaften und Tabellen Spalten werden in untergeordneten EndProperty -Elementen angegeben.Mappings between association type properties and table columns are specified in child EndProperty elements.

 <AssociationSetMapping Name="FK_Course_Department"
                        TypeName="SchoolModel.FK_Course_Department"
                        StoreEntitySet="Course">
   <EndProperty Name="Department">
     <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
   </EndProperty>
   <EndProperty Name="Course">
     <ScalarProperty Name="CourseID" ColumnName="CourseID" />
   </EndProperty>
 </AssociationSetMapping>

BeispielExample

Das folgende Beispiel zeigt das EndProperty -Element, das die INSERT-und DELETE-Funktionen einer Association (CourseInstructor) zu gespeicherten Prozeduren in der zugrunde liegenden Datenbank zuordnet.The following example shows the EndProperty element mapping the insert and delete functions of an association (CourseInstructor) to stored procedures in the underlying database. Die Funktionen, denen sie zugeordnet werden, sind im Speichermodell deklariert.The functions that are mapped to are declared in the storage model.

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

EntityContainerMapping-Element (MSL)EntityContainerMapping Element (MSL)

Das EntityContainerMapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet den Entitäts Container im konzeptionellen Modell dem Entitäts Container im Speichermodell zu.The EntityContainerMapping element in mapping specification language (MSL) maps the entity container in the conceptual model to the entity container in the storage model. Das EntityContainerMapping -Element ist ein untergeordnetes Element des Mapping-Elements.The EntityContainerMapping element is a child of the Mapping element.

Das EntityContainerMapping -Element kann die folgenden untergeordneten Elemente aufweisen (in der angegebenen Reihenfolge):The EntityContainerMapping element can have the following child elements (in the order listed):

  • EntitySetMapping (0 (null) oder mehr)EntitySetMapping (zero or more)
  • AssociationSetMapping (0 (null) oder mehr)AssociationSetMapping (zero or more)
  • FunctionImportMapping (0 (null) oder mehr)FunctionImportMapping (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das EntityContainerMapping -Element angewendet werden können.The following table describes the attributes that can be applied to the EntityContainerMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
StoragemodelcontainerStorageModelContainer JaYes Der Name des Entitätscontainers im Speichermodell, der zugeordnet wird.The name of the storage model entity container that is being mapped.
CdmEntityContainerCdmEntityContainer JaYes Der Name des Entitätscontainers im konzeptionellen Modell, der zugeordnet wird.The name of the conceptual model entity container that is being mapped.
GenerateupdateviewsGenerateUpdateViews NeinNo True und False.True or False. Falsegibt an, dass keine Update Sichten generiert werden.If False, no update views are generated. Dieses Attribut sollte auf false festgelegt werden, wenn Sie eine schreibgeschützte Zuordnung haben, die ungültig wäre, da die Daten möglicherweise nicht erfolgreich abgerundet werden.This attribute should be set to False when you have a read-only mapping that would be invalid because data may not round-trip successfully.
Der Standardwert ist True.The default value is True.

BeispielExample

Das folgende Beispiel zeigt ein EntityContainerMapping -Element, das den Container schoolmodelentities (der Entitäts Container des konzeptionellen Modells) dem Container schoolmodelstorecontainer (dem Entitätencontainer des Speicher Modells) zuordnet:The following example shows an EntityContainerMapping element that maps the SchoolModelEntities container (the conceptual model entity container) to the SchoolModelStoreContainer container (the storage model entity container):

 <EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
                         CdmEntityContainer="SchoolModelEntities">
   <EntitySetMapping Name="Courses">
     <EntityTypeMapping TypeName="c.Course">
       <MappingFragment StoreEntitySet="Course">
         <ScalarProperty Name="CourseID" ColumnName="CourseID" />
         <ScalarProperty Name="Title" ColumnName="Title" />
         <ScalarProperty Name="Credits" ColumnName="Credits" />
         <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
       </MappingFragment>
     </EntityTypeMapping>
   </EntitySetMapping>
   <EntitySetMapping Name="Departments">
     <EntityTypeMapping TypeName="c.Department">
       <MappingFragment StoreEntitySet="Department">
         <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
         <ScalarProperty Name="Name" ColumnName="Name" />
         <ScalarProperty Name="Budget" ColumnName="Budget" />
         <ScalarProperty Name="StartDate" ColumnName="StartDate" />
         <ScalarProperty Name="Administrator" ColumnName="Administrator" />
       </MappingFragment>
     </EntityTypeMapping>
   </EntitySetMapping>
 </EntityContainerMapping>

EntitySetMapping-Element (MSL)EntitySetMapping Element (MSL)

Das EntitySetMapping -Element in der Mapping-Spezifikationssprache (MSL) ordnet alle Typen in einer Entitätenmenge eines konzeptionellen Modells Entitätenmengen im Speichermodell zu.The EntitySetMapping element in mapping specification language (MSL) maps all types in a conceptual model entity set to entity sets in the storage model. Eine Entitätenmenge im konzeptionellen Modell ist ein logischer Container für Instanzen der Entitäten des gleichen Typs (und abgeleiteter Typen).An entity set in the conceptual model is a logical container for instances of entities of the same type (and derived types). Eine Entitätenmenge im Speichermodell stellt eine Tabelle oder eine Ansicht in der zugrunde liegenden Datenbank dar.An entity set in the storage model represents a table or view in the underlying database. Die Entitätenmenge des konzeptionellen Modells wird durch den Wert des Name -Attributs des EntitySetMapping -Elements angegeben.The conceptual model entity set is specified by the value of the Name attribute of the EntitySetMapping element. Die Tabelle oder Sicht, die zugeordnet ist, wird durch das StoreEntitySet -Attribut in jedem untergeordneten MappingFragment-Element oder im EntitySetMapping -Element selbst angegeben.The mapped-to table or view is specified by the StoreEntitySet attribute in each child MappingFragment element or in the EntitySetMapping element itself.

Das EntitySetMapping -Element kann die folgenden untergeordneten Elemente aufweisen:The EntitySetMapping element can have the following child elements:

  • EntityTypeMapping (0 (null) oder mehr)EntityTypeMapping (zero or more)
  • QueryView (kein (null) oder ein Element)QueryView (zero or one)
  • MappingFragment (null oder mehr)MappingFragment (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das EntitySetMapping -Element angewendet werden können.The following table describes the attributes that can be applied to the EntitySetMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name der Entitätenmenge im konzeptionellen Modell, die zugeordnet wird.The name of the conceptual model entity set that is being mapped.
Typname 1TypeName 1 NeinNo Der Name des Entitätstyp im konzeptionellen Modell, der zugeordnet wird.The name of the conceptual model entity type that is being mapped.
StoreEntitySet 1StoreEntitySet 1 NeinNo Der Name der Entitätenmenge im Speichermodell, die zugeordnet wird.The name of the storage model entity set that is being mapped to.
MakeColumnsDistinctMakeColumnsDistinct NeinNo True oder false , abhängig davon, ob nur unterschiedliche Zeilen zurückgegeben werden.True or False depending on whether only distinct rows are returned.
Wenn dieses Attribut auf truefestgelegt ist, muss das generateupdateviews -Attribut des EntityContainerMapping-Elements auf falsefestgelegt werden.If this attribute is set to True, the GenerateUpdateViews attribute of the EntityContainerMapping element must be set to False.

 

1 das tykame -Attribut und das StoreEntitySet -Attribut können anstelle der untergeordneten EntityTypeMapping-und MappingFragment-Elemente verwendet werden, um einen einzelnen Entitätstyp einer einzelnen Tabelle zuzuordnen.1 The TypeName and StoreEntitySet attributes can be used in place of the EntityTypeMapping and MappingFragment child elements to map a single entity type to a single table.

BeispielExample

Das folgende Beispiel zeigt ein EntitySetMapping -Element, das drei Typen (einen Basistyp und zwei abgeleitete Typen) in der Entitätenmenge des konzeptionellen Modells drei verschiedenen Tabellen in der zugrunde liegenden Datenbank zuordnet.The following example shows an EntitySetMapping element that maps three types (a base type and two derived types) in the Courses entity set of the conceptual model to three different tables in the underlying database. Die Tabellen werden durch das StoreEntitySet -Attribut in jedem MappingFragment -Element angegeben.The tables are specified by the StoreEntitySet attribute in each MappingFragment element.

 <EntitySetMapping Name="Courses">
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.Course)">
     <MappingFragment StoreEntitySet="Course">
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
       <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
       <ScalarProperty Name="Credits" ColumnName="Credits" />
       <ScalarProperty Name="Title" ColumnName="Title" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.OnlineCourse)">
     <MappingFragment StoreEntitySet="OnlineCourse">
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
       <ScalarProperty Name="URL" ColumnName="URL" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel1.OnsiteCourse)">
     <MappingFragment StoreEntitySet="OnsiteCourse">
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
       <ScalarProperty Name="Time" ColumnName="Time" />
       <ScalarProperty Name="Days" ColumnName="Days" />
       <ScalarProperty Name="Location" ColumnName="Location" />
     </MappingFragment>
   </EntityTypeMapping>
 </EntitySetMapping>

EntityTypeMapping-Element (MSL)EntityTypeMapping Element (MSL)

Das EntityTypeMapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen einem Entitätstyp im konzeptionellen Modell und den Tabellen oder Sichten in der zugrunde liegenden Datenbank.The EntityTypeMapping element in mapping specification language (MSL) defines the mapping between an entity type in the conceptual model and tables or views in the underlying database. Informationen zu den Entitätstypen des konzeptionellen Modells und den zugrunde liegenden Datenbanktabellen oder Ansichten finden Sie in EntityType-Element (CSDL) und EntitySet-Element (SSDL).For information about conceptual model entity types and underlying database tables or views, see EntityType Element (CSDL) and EntitySet Element (SSDL). Der Entitätstyp des konzeptionellen Modells, der zugeordnet wird, wird durch das tykame -Attribut des EntityTypeMapping -Elements angegeben.The conceptual model entity type that is being mapped is specified by the TypeName attribute of the EntityTypeMapping element. Die Tabelle oder Sicht, die zugeordnet wird, wird durch das StoreEntitySet -Attribut des untergeordneten MappingFragment-Elements angegeben.The table or view that is being mapped is specified by the StoreEntitySet attribute of the child MappingFragment element.

Das untergeordnete ModificationFunctionMapping-Element kann verwendet werden, um gespeicherten Prozeduren in der Datenbank die Einfüge-, Aktualisierungs- oder Löschfunktionen von Entitätstypen zuzuordnen.The ModificationFunctionMapping child element can be used to map the insert, update, or delete functions of entity types to stored procedures in the database.

Das EntityTypeMapping -Element kann die folgenden untergeordneten Elemente aufweisen:The EntityTypeMapping element can have the following child elements:

  • MappingFragment (null oder mehr)MappingFragment (zero or more)
  • ModificationFunctionMapping (kein (null) oder ein Element)ModificationFunctionMapping (zero or one)
  • ScalarPropertyScalarProperty
  • BedingungCondition

Hinweis

MappingFragment -und ModificationFunctionMapping -Elemente können nicht gleichzeitig untergeordnete Elemente des EntityTypeMapping -Elements sein.MappingFragment and ModificationFunctionMapping elements cannot be child elements of the EntityTypeMapping element at the same time.

Hinweis

Die ScalarProperty -und Condition -Elemente können nur untergeordnete Elemente des EntityTypeMapping -Elements sein, wenn Sie in einem FunctionImportMapping-Element verwendet werden.The ScalarProperty and Condition elements can only be child elements of the EntityTypeMapping element when it is used within a FunctionImportMapping element.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das EntityTypeMapping -Element angewendet werden können.The following table describes the attributes that can be applied to the EntityTypeMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
TypeNameTypeName JaYes Der mit einem Namespace qualifizierte Name des Entitätstyps des konzeptionellen Modells, der zugeordnet wird.The namespace-qualified name of the conceptual model entity type that is being mapped.
Wenn der Typ abstrakt oder ein abgeleiteter Typ ist, muss der Wert IsOfType(Namespace-qualified_type_name) lauten.If the type is abstract or a derived type, the value must be IsOfType(Namespace-qualified_type_name).

BeispielExample

Das folgende Beispiel zeigt ein EntitySetMapping-Element mit zwei untergeordneten EntityTypeMapping -Elementen.The following example shows an EntitySetMapping element with two child EntityTypeMapping elements. Im ersten EntityTypeMapping -Element wird der " School Model. Person "-Entitätstyp der Person -Tabelle zugeordnet.In the first EntityTypeMapping element, the SchoolModel.Person entity type is mapped to the Person table. Im zweiten EntityTypeMapping -Element wird die Aktualisierungs Funktion des SchoolModel. Person -Typs der gespeicherten Prozedur updatepersonin der-Datenbank zugeordnet.In the second EntityTypeMapping element, the update functionality of the SchoolModel.Person type is mapped to a stored procedure, UpdatePerson, in the database.

 <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>
       <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>
     </ModificationFunctionMapping>
   </EntityTypeMapping>
 </EntitySetMapping>

BeispielExample

Im nächsten Beispiel wird die Zuordnung einer Typhierarchie, in der der Stammtyp abstrakt ist, veranschaulicht.The next example shows the mapping of a type hierarchy in which the root type is abstract. Beachten Sie die Verwendung der IsOfType Syntax für die tygtame -Attribute.Note the use of the IsOfType syntax for the TypeName attributes.

 <EntitySetMapping Name="People">
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="FirstName" ColumnName="FirstName" />
       <ScalarProperty Name="LastName" ColumnName="LastName" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="HireDate" ColumnName="HireDate" />
       <Condition ColumnName="HireDate" IsNull="false" />
       <Condition ColumnName="EnrollmentDate" IsNull="true" />
     </MappingFragment>
   </EntityTypeMapping>
   <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)">
     <MappingFragment StoreEntitySet="Person">
       <ScalarProperty Name="PersonID" ColumnName="PersonID" />
       <ScalarProperty Name="EnrollmentDate"
                       ColumnName="EnrollmentDate" />
       <Condition ColumnName="EnrollmentDate" IsNull="false" />
       <Condition ColumnName="HireDate" IsNull="true" />
     </MappingFragment>
   </EntityTypeMapping>
 </EntitySetMapping>

FunctionImportMapping-Element (MSL)FunctionImportMapping Element (MSL)

Das FunctionImportMapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen einem Funktions Import im konzeptionellen Modell und einer gespeicherten Prozedur oder Funktion in der zugrunde liegenden Datenbank.The FunctionImportMapping element in mapping specification language (MSL) defines the mapping between a function import in the conceptual model and a stored procedure or function in the underlying database. Funktionsimporte müssen im konzeptionellen Modell und gespeicherte Prozeduren müssen im Speichermodell deklariert werden.Function imports must be declared in the conceptual model and stored procedures must be declared in the storage model. Weitere Informationen finden Sie unter FunctionImport-Element (CSDL) und Function-Element (SSDL).For more information, see FunctionImport Element (CSDL) and Function Element (SSDL).

Hinweis

Wenn ein Funktionsimport einen Entitätstyp des konzeptionellen Modells oder einen komplexen Typ zurückgibt, dann müssen standardmäßig die Namen der Spalten, die von der zugrunde liegenden gespeicherten Prozedur zurückgegeben werden, exakt den Namen der Eigenschaften des konzeptionellen Modelltyps entsprechen.By default, if a function import returns a conceptual model entity type or complex type, then the names of the columns returned by the underlying stored procedure must exactly match the names of the properties on the conceptual model type. Wenn die Spaltennamen nicht exakt mit den Eigenschaftsnamen übereinstimmen, muss die Zuordnung in einem resultmapping-Element definiert werden.If the column names do not exactly match the property names, the mapping must be defined in a ResultMapping element.

Das FunctionImportMapping -Element kann die folgenden untergeordneten Elemente aufweisen:The FunctionImportMapping element can have the following child elements:

  • Resultmapping (0 (null) oder mehr)ResultMapping (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die für das FunctionImportMapping -Element anwendbar sind:The following table describes the attributes that are applicable to the FunctionImportMapping element:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionImportNameFunctionImportName JaYes Der Name des Funktionsimports im konzeptionellen Modell, der zugeordnet wird.The name of the function import in the conceptual model that is being mapped.
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der Funktion im Speichermodell, die zugeordnet wird.The namespace-qualified name of the function in the storage model that is being mapped.

BeispielExample

Das folgende Beispiel beruht auf dem School-Modell.The following example is based on the School model. Betrachten Sie die folgende Funktion im Speichermodell:Consider the following function in the storage model:

 <Function Name="GetStudentGrades" Aggregate="false"
           BuiltIn="false" NiladicFunction="false"
           IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion"
           Schema="dbo">
   <Parameter Name="StudentID" Type="int" Mode="In" />
 </Function>

Beachten Sie auch diesen Funktionsimport im konzeptionellen Modell:Also consider this function import in the conceptual model:

 <FunctionImport Name="GetStudentGrades" EntitySet="StudentGrades"
                 ReturnType="Collection(SchoolModel.StudentGrade)">
   <Parameter Name="StudentID" Mode="In" Type="Int32" />
 </FunctionImport>

Das folgende Beispiel zeigt ein FunctionImportMapping -Element, das verwendet wird, um den Funktions-und Funktions Import einander zuzuordnen:The following example show a FunctionImportMapping element used to map the function and function import above to each other:

 <FunctionImportMapping FunctionImportName="GetStudentGrades"
                        FunctionName="SchoolModel.Store.GetStudentGrades" />

 

InsertFunction-Element (MSL)InsertFunction Element (MSL)

Das InsertFunction -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet die INSERT-Funktion eines Entitäts Typs oder einer Zuordnung im konzeptionellen Modell einer gespeicherten Prozedur in der zugrunde liegenden Datenbank zu.The InsertFunction element in mapping specification language (MSL) maps the insert function of an entity type or association in the conceptual model to a stored procedure in the underlying database. Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden.Stored procedures to which modification functions are mapped must be declared in the storage model. Weitere Informationen finden Sie unter Function-Element (SSDL).For more information, see Function Element (SSDL).

Hinweis

Wenn Sie nicht alle drei Einfüge-, Aktualisierungs-oder Löschvorgänge eines Entitäts Typs gespeicherten Prozeduren zuordnen, schlagen die nicht zugeordneten Vorgänge fehl, wenn Sie zur Laufzeit ausgeführt werden und eine Update Exception ausgelöst wird.If you do not map all three of the insert, update, or delete operations of a entity type to stored procedures, the unmapped operations will fail if executed at runtime and an UpdateException is thrown.

Das InsertFunction -Element kann ein untergeordnetes Element des ModificationFunctionMapping-Elements sein und auf das EntityTypeMapping-Element oder das AssociationSetMapping-Element angewendet werden.The InsertFunction element can be a child of the ModificationFunctionMapping element and applied to the EntityTypeMapping element or the AssociationSetMapping element.

InsertFunction angewendet auf EntityTypeMappingInsertFunction Applied to EntityTypeMapping

Wenn das InsertFunction -Element auf das EntityTypeMapping-Element angewendet wird, ordnet es die INSERT-Funktion eines Entitäts Typs im konzeptionellen Modell einer gespeicherten Prozedur zu.When applied to the EntityTypeMapping element, the InsertFunction element maps the insert function of an entity type in the conceptual model to a stored procedure.

Das InsertFunction -Element kann die folgenden untergeordneten Elemente aufweisen, wenn es auf ein EntityTypeMapping -Element angewendet wird:The InsertFunction element can have the following child elements when applied to an EntityTypeMapping element:

  • AssociationEnd (null (0) oder mehr)AssociationEnd (zero or more)
  • ComplexProperty (0 (null) oder mehr)ComplexProperty (zero or more)
  • ResultBinding (0 (null) oder einer)ResultBinding (zero or one)
  • ScalarProperty (null (0) oder mehr)ScarlarProperty (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das InsertFunction -Element angewendet werden können, wenn es auf ein EntityTypeMapping -Element angewendet wird.The following table describes the attributes that can be applied to the InsertFunction element when applied to an EntityTypeMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der gespeicherten Prozedur, der die Einfügefunktion zugeordnet wird.The namespace-qualified name of the stored procedure to which the insert function is mapped. Die gespeicherte Prozedur muss im Speichermodell deklariert werden.The stored procedure must be declared in the storage model.
RowsaffectedparameterRowsAffectedParameter NeinNo Der Name des Ausgabeparameters, der die Anzahl der betroffenen Zeilen zurückgibt.The name of the output parameter that returns the number of affected rows.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt das InsertFunction -Element, das verwendet wird, um die Einfügefunktion des Entitäts Typs "Person" der gespeicherten Prozedur InsertPerson zuzuordnen.The following example is based on the School model and shows the InsertFunction element used to map insert function of the Person entity type to the InsertPerson stored procedure. Die gespeicherte Prozedur InsertPerson wird im Speichermodell deklariert.The InsertPerson stored procedure is declared in the storage model.

 <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 angewendet auf AssociationSetMappingInsertFunction Applied to AssociationSetMapping

Wenn das InsertFunction -Element auf das AssociationSetMapping-Element angewendet wird, ordnet es die INSERT-Funktion einer Zuordnung im konzeptionellen Modell einer gespeicherten Prozedur zu.When applied to the AssociationSetMapping element, the InsertFunction element maps the insert function of an association in the conceptual model to a stored procedure.

Das InsertFunction -Element kann die folgenden untergeordneten Elemente aufweisen, wenn es auf das AssociationSetMapping -Element angewendet wird:The InsertFunction element can have the following child elements when applied to the AssociationSetMapping element:

  • EndPropertyEndProperty

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das InsertFunction -Element angewendet werden können, wenn es auf das AssociationSetMapping -Element angewendet wird.The following table describes the attributes that can be applied to the InsertFunction element when it is applied to the AssociationSetMapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der gespeicherten Prozedur, der die Einfügefunktion zugeordnet wird.The namespace-qualified name of the stored procedure to which the insert function is mapped. Die gespeicherte Prozedur muss im Speichermodell deklariert werden.The stored procedure must be declared in the storage model.
RowsaffectedparameterRowsAffectedParameter NeinNo Der Name des Ausgabeparameters, der die Anzahl der betroffenen Zeilen zurückgibt.The name of the output parameter that returns the number of rows affected.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt das InsertFunction -Element, das verwendet wird, um die INSERT-Funktion der " CourseInstructor "-Zuordnung der gespeicherten Prozedur insertcourseinstructor zuzuordnen.The following example is based on the School model and shows the InsertFunction element used to map insert function of the CourseInstructor association to the InsertCourseInstructor stored procedure. Die gespeicherte Prozedur insertcourseinstructor ist im Speichermodell deklariert.The InsertCourseInstructor stored procedure is declared in the storage model.

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

Mapping-Element (MSL)Mapping Element (MSL)

Das Mapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) enthält Informationen zum Mapping von Objekten, die in einem konzeptionellen Modell definiert sind, zu einer Datenbank (wie in einem Speichermodell beschrieben).The Mapping element in mapping specification language (MSL) contains information for mapping objects that are defined in a conceptual model to a database (as described in a storage model). Weitere Informationen finden Sie unter CSDL-Spezifikation und SSDL-Spezifikation.For more information, see CSDL Specification and SSDL Specification.

Das Mapping -Element ist das Stamm Element für eine Mappingspezifikation.The Mapping element is the root element for a mapping specification. Der XML-Namespace für Mappingspezifikationen ist https://schemas.microsoft.com/ado/2009/11/mapping/cs .The XML namespace for mapping specifications is https://schemas.microsoft.com/ado/2009/11/mapping/cs.

Das Mapping-Element kann die folgenden untergeordneten Elemente aufweisen (der vorliegenden Reihenfolge entsprechend):The mapping element can have the following child elements (in the order listed):

  • Alias (null (0) oder mehr)Alias (zero or more)
  • EntityContainerMapping (genau ein Element)EntityContainerMapping (exactly one)

Die Namen aller Typen des konzeptionellen Modells und Typen des Speichermodells, auf die in MSL verwiesen wird, müssen mit dem jeweiligen Namespacenamen qualifiziert werden.Names of conceptual and storage model types that are referenced in MSL must be qualified by their respective namespace names. Weitere Informationen zum Namespace Namen des konzeptionellen Modells finden Sie unter Schema-Element (CSDL).For information about the conceptual model namespace name, see Schema Element (CSDL). Weitere Informationen zum Namespace Namen des Speicher Modells finden Sie unter Schema-Element (SSDL).For information about the storage model namespace name, see Schema Element (SSDL). Aliasnamen für Namespaces, die in MSL verwendet werden, können mit dem Alias-Element definiert werden.Aliases for namespaces that are used in MSL can be defined with the Alias element.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das Mapping -Element angewendet werden können.The table below describes the attributes that can be applied to the Mapping element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
BRaumSpace JaYes C-S.C-S. Dies ist ein fester Wert, der nicht geändert werden kann.This is a fixed value and cannot be changed.

BeispielExample

Das folgende Beispiel zeigt ein Mapping -Element, das auf einem Teil des Modells "School" basiert.The following example shows a Mapping element that is based on part of the School model. Weitere Informationen zum Modell "School" finden Sie unter Schnellstart (Entity Framework):For more information about the School model, see Quickstart (Entity Framework):

 <Mapping Space="C-S"
          xmlns="https://schemas.microsoft.com/ado/2009/11/mapping/cs">
   <Alias Key="c" Value="SchoolModel"/>
   <EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
                           CdmEntityContainer="SchoolModelEntities">
     <EntitySetMapping Name="Courses">
       <EntityTypeMapping TypeName="c.Course">
         <MappingFragment StoreEntitySet="Course">
           <ScalarProperty Name="CourseID" ColumnName="CourseID" />
           <ScalarProperty Name="Title" ColumnName="Title" />
           <ScalarProperty Name="Credits" ColumnName="Credits" />
           <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
         </MappingFragment>
       </EntityTypeMapping>
     </EntitySetMapping>
     <EntitySetMapping Name="Departments">
       <EntityTypeMapping TypeName="c.Department">
         <MappingFragment StoreEntitySet="Department">
           <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
           <ScalarProperty Name="Name" ColumnName="Name" />
           <ScalarProperty Name="Budget" ColumnName="Budget" />
           <ScalarProperty Name="StartDate" ColumnName="StartDate" />
           <ScalarProperty Name="Administrator" ColumnName="Administrator" />
         </MappingFragment>
       </EntityTypeMapping>
     </EntitySetMapping>
   </EntityContainerMapping>
 </Mapping>

MappingFragment-Element (MSL)MappingFragment Element (MSL)

Das MappingFragment -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen den Eigenschaften eines Entitäts Typs des konzeptionellen Modells und einer Tabelle oder Sicht in der Datenbank.The MappingFragment element in mapping specification language (MSL) defines the mapping between the properties of a conceptual model entity type and a table or view in the database. Informationen zu den Entitätstypen des konzeptionellen Modells und den zugrunde liegenden Datenbanktabellen oder Ansichten finden Sie in EntityType-Element (CSDL) und EntitySet-Element (SSDL).For information about conceptual model entity types and underlying database tables or views, see EntityType Element (CSDL) and EntitySet Element (SSDL). Das MappingFragment kann ein untergeordnetes Element des EntityTypeMapping-Elements oder des EntitySetMapping-Elements sein.The MappingFragment can be a child element of the EntityTypeMapping element or the EntitySetMapping element.

Das MappingFragment -Element kann die folgenden untergeordneten Elemente aufweisen:The MappingFragment element can have the following child elements:

  • ComplexType (null oder mehrere Elemente)ComplexType (zero or more)
  • ScalarProperty (0 (null) oder mehr)ScalarProperty (zero or more)
  • Condition (0 (null) oder mehr Elemente)Condition (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das MappingFragment -Element angewendet werden können.The following table describes the attributes that can be applied to the MappingFragment element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
StoreEntitySetStoreEntitySet JaYes Der Name der Tabelle oder Ansicht, die zugeordnet wird.The name of the table or view that is being mapped.
MakeColumnsDistinctMakeColumnsDistinct NeinNo True oder false , abhängig davon, ob nur unterschiedliche Zeilen zurückgegeben werden.True or False depending on whether only distinct rows are returned.
Wenn dieses Attribut auf truefestgelegt ist, muss das generateupdateviews -Attribut des EntityContainerMapping-Elements auf falsefestgelegt werden.If this attribute is set to True, the GenerateUpdateViews attribute of the EntityContainerMapping element must be set to False.

BeispielExample

Das folgende Beispiel zeigt ein MappingFragment -Element als untergeordnetes Element eines EntityTypeMapping -Elements.The following example shows a MappingFragment element as the child of an EntityTypeMapping element. In diesem Beispiel werden Eigenschaften des Course -Typs im konzeptionellen Modell den Spalten der Course -Tabelle in der-Datenbank zugeordnet.In this example, properties of the Course type in the conceptual model are mapped to columns of the Course table in the database.

 <EntitySetMapping Name="Courses">
   <EntityTypeMapping TypeName="SchoolModel.Course">
     <MappingFragment StoreEntitySet="Course">
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
       <ScalarProperty Name="Title" ColumnName="Title" />
       <ScalarProperty Name="Credits" ColumnName="Credits" />
       <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
     </MappingFragment>
   </EntityTypeMapping>
 </EntitySetMapping>

BeispielExample

Das folgende Beispiel zeigt ein MappingFragment -Element als untergeordnetes Element eines EntitySetMapping -Elements.The following example shows a MappingFragment element as the child of an EntitySetMapping element. Wie im obigen Beispiel werden Eigenschaften des Course -Typs im konzeptionellen Modell den Spalten der Course -Tabelle in der-Datenbank zugeordnet.As in the example above, properties of the Course type in the conceptual model are mapped to columns of the Course table in the database.

 <EntitySetMapping Name="Courses" TypeName="SchoolModel.Course">
     <MappingFragment StoreEntitySet="Course">
       <ScalarProperty Name="CourseID" ColumnName="CourseID" />
       <ScalarProperty Name="Title" ColumnName="Title" />
       <ScalarProperty Name="Credits" ColumnName="Credits" />
       <ScalarProperty Name="DepartmentID" ColumnName="DepartmentID" />
     </MappingFragment>
 </EntitySetMapping>

ModificationFunctionMapping-Element (MSL)ModificationFunctionMapping Element (MSL)

Das ModificationFunctionMapping -Element in der Mapping-Spezifikationssprache (MSL) ordnet die INSERT-, Update-und DELETE-Funktionen eines Entitäts Typs des konzeptionellen Modells gespeicherten Prozeduren in der zugrunde liegenden Datenbank zu.The ModificationFunctionMapping element in mapping specification language (MSL) maps the insert, update, and delete functions of a conceptual model entity type to stored procedures in the underlying database. Das ModificationFunctionMapping -Element kann auch die INSERT-und DELETE-Funktionen für m:n-Zuordnungen im konzeptionellen Modell zu gespeicherten Prozeduren in der zugrunde liegenden Datenbank zuordnen.The ModificationFunctionMapping element can also map the insert and delete functions for many-to-many associations in the conceptual model to stored procedures in the underlying database. Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden.Stored procedures to which modification functions are mapped must be declared in the storage model. Weitere Informationen finden Sie unter Function-Element (SSDL).For more information, see Function Element (SSDL).

Hinweis

Wenn Sie nicht alle drei Einfüge-, Aktualisierungs-oder Löschvorgänge eines Entitäts Typs gespeicherten Prozeduren zuordnen, schlagen die nicht zugeordneten Vorgänge fehl, wenn Sie zur Laufzeit ausgeführt werden und eine Update Exception ausgelöst wird.If you do not map all three of the insert, update, or delete operations of a entity type to stored procedures, the unmapped operations will fail if executed at runtime and an UpdateException is thrown.

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.If the modification functions for one entity in an inheritance hierarchy are mapped to stored procedures, then modification functions for all types in the hierarchy must be mapped to stored procedures.

Das ModificationFunctionMapping -Element kann ein untergeordnetes Element des EntityTypeMapping-Elements oder des AssociationSetMapping-Elements sein.The ModificationFunctionMapping element can be a child of the EntityTypeMapping element or the AssociationSetMapping element.

Das ModificationFunctionMapping -Element kann die folgenden untergeordneten Elemente aufweisen:The ModificationFunctionMapping element can have the following child elements:

  • DeleteFunction (kein (null) oder ein Element)DeleteFunction (zero or one)
  • InsertFunction (kein (null) oder ein Element)InsertFunction (zero or one)
  • UpdateFunction (kein (null) oder ein Element)UpdateFunction (zero or one)

Für das ModificationFunctionMapping -Element sind keine Attribute anwendbar.No attributes are applicable to the ModificationFunctionMapping element.

BeispielExample

Das folgende Beispiel zeigt die entitätenmengenzuordnung für die People -Entitätenmenge im Modell "School".The following example shows the entity set mapping for the People entity set in the School model. Zusätzlich zur Spalten Zuordnung für den Entitätstyp Person wird die Zuordnung der INSERT-, Update-und DELETE-Funktionen des Person -Typs angezeigt.In addition to the column mapping for the Person entity type, the mapping of the insert, update, and delete functions of the Person type are shown. Die Funktionen, denen sie zugeordnet werden, sind im Speichermodell deklariert.The functions that are mapped to are declared in the storage model.

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

BeispielExample

Das folgende Beispiel zeigt die Zuordnung der Zuordnungs Sätze für den im Modell "School" festgelegten CourseInstructor -Zuordnungs Satz.The following example shows the association set mapping for the CourseInstructor association set in the School model. Zusätzlich zur Spalten Zuordnung für die " CourseInstructor "-Zuordnung wird die Zuordnung der INSERT-und DELETE-Funktionen der " CourseInstructor "-Zuordnung angezeigt.In addition to the column mapping for the CourseInstructor association, the mapping of the insert and delete functions of the CourseInstructor association are shown. Die Funktionen, denen sie zugeordnet werden, sind im Speichermodell deklariert.The functions that are mapped to are declared in the storage model.

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

 

 

QueryView-Element (MSL)QueryView Element (MSL)

Das QueryView -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert eine schreibgeschützte Zuordnung zwischen einem Entitätstyp oder einer Zuordnung im konzeptionellen Modell und einer Tabelle in der zugrunde liegenden Datenbank.The QueryView element in mapping specification language (MSL) defines a read-only mapping between an entity type or association in the conceptual model and a table in the underlying database. Die Zuordnung wird mit einer Entity SQL Abfrage definiert, die im Speichermodell ausgewertet wird, und Sie können das Resultset in Bezug auf eine Entität oder eine Zuordnung im konzeptionellen Modell Ausdrücken.The mapping is defined with an Entity SQL query that is evaluated against the storage model, and you express the result set in terms of an entity or association in the conceptual model. Da Abfragesichten schreibgeschützt sind, können die durch Abfragesichten definierten Typen nicht mit herkömmlichen Aktualisierungsbefehlen aktualisiert werden.Because query views are read-only, you cannot use standard update commands to update types that are defined by query views. Diese Typen können mithilfe von Änderungsfunktionen aktualisiert werden.You can make updates to these types by using modification functions. Weitere Informationen finden Sie unter Gewusst wie: Zuordnen von Änderungs Funktionen zu gespeicherten Prozeduren.For more information, see How to: Map Modification Functions to Stored Procedures.

Hinweis

Im QueryView -Element werden Entity SQL Ausdrücke, die GroupBy, Gruppen Aggregate oder Navigations Eigenschaften enthalten, nicht unterstützt.In the QueryView element, Entity SQL expressions that contain GroupBy, group aggregates, or navigation properties are not supported.

 

Das QueryView -Element kann ein untergeordnetes Element des EntitySetMapping-Elements oder des AssociationSetMapping-Elements sein.The QueryView element can be a child of the EntitySetMapping element or the AssociationSetMapping element. Im ersten Fall definiert die Abfrageansicht eine schreibgeschützte Zuordnung für eine Entität im konzeptionellen Modell.In the former case, the query view defines a read-only mapping for an entity in the conceptual model. Im zweiten Fall definiert die Abfrageansicht eine schreibgeschützte Zuordnung für eine Zuordnung im konzeptionellen Modell.In the latter case, the query view defines a read-only mapping for an association in the conceptual model.

Hinweis

Wenn das AssociationSetMapping -Element für eine Zuordnung zu einer referenziellen Einschränkung vorgesehen ist, wird das AssociationSetMapping -Element ignoriert.If the AssociationSetMapping element is for an association with a referential constraint, the AssociationSetMapping element is ignored. Weitere Informationen finden Sie unter referentialeinschränkungs-Element (CSDL).For more information, see ReferentialConstraint Element (CSDL).

Das QueryView -Element darf keine untergeordneten Elemente aufweisen.The QueryView element cannot have any child elements.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das QueryView -Element angewendet werden können.The following table describes the attributes that can be applied to the QueryView element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
TypeNameTypeName NeinNo Der Name des konzeptionellen Modelltyps, der durch die Abfrageansicht zugeordnet wird.The name of the conceptual model type that is being mapped by the query view.

BeispielExample

Das folgende Beispiel zeigt das QueryView -Element als untergeordnetes Element des EntitySetMapping -Elements und definiert eine Abfrage Ansichts Zuordnung für den Department -Entitätstyp im Modell "School".The following example shows the QueryView element as a child of the EntitySetMapping element and defines a query view mapping for the Department entity type in the School Model.

 <EntitySetMapping Name="Departments" >
   <QueryView>
     SELECT VALUE SchoolModel.Department(d.DepartmentID,
                                         d.Name,
                                         d.Budget,
                                         d.StartDate)
     FROM SchoolModelStoreContainer.Department AS d
     WHERE d.Budget > 150000
   </QueryView>
 </EntitySetMapping>

Da die Abfrage nur eine Teilmenge der Member des Abteilungs Typs im Speichermodell zurückgibt, wurde der Abteilungs Typ im Modell "School" wie folgt auf der Grundlage dieser Zuordnung geändert:Because the query only returns a subset of the members of the Department type in the storage model, the Department type in the School model has been modified based on this mapping as follows:

 <EntityType Name="Department">
   <Key>
     <PropertyRef Name="DepartmentID" />
   </Key>
   <Property Type="Int32" Name="DepartmentID" Nullable="false" />
   <Property Type="String" Name="Name" Nullable="false"
             MaxLength="50" FixedLength="false" Unicode="true" />
   <Property Type="Decimal" Name="Budget" Nullable="false"
             Precision="19" Scale="4" />
   <Property Type="DateTime" Name="StartDate" Nullable="false" />
   <NavigationProperty Name="Courses"
                       Relationship="SchoolModel.FK_Course_Department"
                       FromRole="Department" ToRole="Course" />
 </EntityType>

BeispielExample

Das nächste Beispiel zeigt das QueryView -Element als untergeordnetes Element eines AssociationSetMapping -Elements und definiert eine schreibgeschützte Zuordnung für die Zuordnung FK_Course_Department im Modell "School".The next example shows the QueryView element as the child of an AssociationSetMapping element and defines a read-only mapping for the FK_Course_Department association in the School model.

 <EntityContainerMapping StorageEntityContainer="SchoolModelStoreContainer"
                         CdmEntityContainer="SchoolEntities">
   <EntitySetMapping Name="Courses" >
     <QueryView>
       SELECT VALUE SchoolModel.Course(c.CourseID,
                                       c.Title,
                                       c.Credits)
       FROM SchoolModelStoreContainer.Course AS c
     </QueryView>
   </EntitySetMapping>
   <EntitySetMapping Name="Departments" >
     <QueryView>
       SELECT VALUE SchoolModel.Department(d.DepartmentID,
                                           d.Name,
                                           d.Budget,
                                           d.StartDate)
       FROM SchoolModelStoreContainer.Department AS d
       WHERE d.Budget > 150000
     </QueryView>
   </EntitySetMapping>
   <AssociationSetMapping Name="FK_Course_Department" >
     <QueryView>
       SELECT VALUE SchoolModel.FK_Course_Department(
         CREATEREF(SchoolEntities.Departments, row(c.DepartmentID), SchoolModel.Department),
         CREATEREF(SchoolEntities.Courses, row(c.CourseID)) )
       FROM SchoolModelStoreContainer.Course AS c
     </QueryView>
   </AssociationSetMapping>
 </EntityContainerMapping>

 

KommentareComments

Sie können Abfragesichten definieren, um die folgenden Szenarien zu ermöglichen:You can define query views to enable the following scenarios:

  • Definieren einer Entität im konzeptionellen Modell, die nicht alle Eigenschaften der Entität im Speichermodell einschließt.Define an entity in the conceptual model that doesn't include all the properties of the entity in the storage model. Dies schließt Eigenschaften ein, die keine Standardwerte aufweisen und keine null -Werte unterstützen.This includes properties that do not have default values and do not support null values.
  • Zuordnen von berechneten Spalten im Speichermodell zu Eigenschaften von Entitätstypen im konzeptionellen Modell.Map computed columns in the storage model to properties of entity types in the conceptual model.
  • Definieren eines Mappings, bei dem die Bedingungen, die für die Partitionierung von Entitäten im konzeptionellen Modell verwendet werden, nicht auf Gleichheit basieren.Define a mapping where conditions used to partition entities in the conceptual model are not based on equality. Wenn Sie eine bedingte Zuordnung mit dem Condition -Element angeben, muss die angegebene Bedingung dem angegebenen Wert entsprechen.When you specify a conditional mapping using the Condition element, the supplied condition must equal the specified value. Weitere Informationen finden Sie unter Condition-Element (MSL).For more information, see Condition Element (MSL).
  • Zuordnen derselben Spalte im Speichermodell zu mehreren Typen im konzeptionellen Modell.Map the same column in the storage model to multiple types in the conceptual model.
  • Zuordnen mehrerer Typen zu derselben Tabelle.Map multiple types to the same table.
  • Definieren von Zuordnungen im konzeptionellen Modell, die nicht auf Fremdschlüsseln im relationalen Schema basieren.Define associations in the conceptual model that are not based on foreign keys in the relational schema.
  • Verwenden benutzerdefinierter Geschäftslogik, um die Werte von Eigenschaften im konzeptionellen Modell festzulegen.Use custom business logic to set the value of properties in the conceptual model. Beispielsweise können Sie den Zeichen folgen Wert "T" in der Datenquelle einem Wert von true, einem booleschen Wert im konzeptionellen Modell zuordnen.For example, you could map the string value "T" in the data source to a value of true, a Boolean, in the conceptual model.
  • Definieren bedingter Filter für Abfrageergebnisse.Define conditional filters for query results.
  • Erzwingen von geringeren Dateneinschränkungen im konzeptionellen Modell als im Speichermodell.Enforce fewer restrictions on data in the conceptual model than in the storage model. Beispielsweise können Sie festlegen, dass eine Eigenschaft im konzeptionellen Modell NULL-Werte zulässt, auch wenn die Spalte, der Sie zugeordnet ist, keine null-Werte unterstützt.For example, you could make a property in the conceptual model nullable even if the column to which it is mapped does not support nullvalues.

Die folgenden Aspekte gelten, wenn Sie Abfragesichten für Entitäten definieren:The following considerations apply when you define query views for entities:

  • Abfragesichten sind schreibgeschützt.Query views are read-only. Sie können Entitäten nur mit Änderungsfunktionen aktualisieren.You can only make updates to entities by using modification functions.
  • Wenn Sie eine Entität durch eine Abfragesicht definieren, müssen Sie auch alle verknüpften Entitäten durch Abfragesichten definieren.When you define an entity type by a query view, you must also define all related entities by query views.
  • Wenn Sie einer Entität im Speichermodell, das eine Verknüpfungs Tabelle im relationalen Schema darstellt, eine m:n-Zuordnung zuordnen, müssen Sie im AssociationSetMapping -Element für diese Link Tabelle ein QueryView -Element definieren.When you map a many-to-many association to an entity in the storage model that represents a link table in the relational schema, you must define a QueryView element in the AssociationSetMapping element for this link table.
  • Abfragesichten müssen für alle Typen in einer Typhierarchie definiert werden.Query views must be defined for all types in a type hierarchy. Dazu stehen Ihnen folgende Möglichkeiten zur Verfügung:You can do this in the following ways:
    • Mit einem einzelnen QueryView -Element, das eine einzelne Entity SQL Abfrage angibt, die eine Vereinigung aller Entitäts Typen in der Hierarchie zurückgibt.With a single QueryView element that specifies a single Entity SQL query that returns a union of all of the entity types in the hierarchy.
    • Mit einem einzelnen QueryView -Element, das eine einzelne Entity SQL Abfrage angibt, die den Case-Operator verwendet, um einen bestimmten Entitätstyp in der Hierarchie auf der Grundlage einer bestimmten Bedingung zurückzugeben.With a single QueryView element that specifies a single Entity SQL query that uses the CASE operator to return a specific entity type in the hierarchy based on a specific condition.
    • Mit einem zusätzlichen QueryView -Element für einen bestimmten Typ in der Hierarchie.With an additional QueryView element for a specific type in the hierarchy. Verwenden Sie in diesem Fall das tykame -Attribut des QueryView -Elements, um den Entitätstyp für jede Ansicht anzugeben.In this case, use the TypeName attribute of the QueryView element to specify the entity type for each view.
  • Wenn eine Abfrage Sicht definiert ist, können Sie das StorageSetName -Attribut nicht im EntitySetMapping -Element angeben.When a query view is defined, you cannot specify the StorageSetName attribute on the EntitySetMapping element.
  • Wenn eine Abfrage Sicht definiert ist, kann das EntitySetMapping-Element nicht auch Eigenschaften Zuordnungen enthalten.When a query view is defined, the EntitySetMappingelement cannot also contain Property mappings.

ResultBinding-Element (MSL)ResultBinding Element (MSL)

Das ResultBinding -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet Spaltenwerte, die von gespeicherten Prozeduren zurückgegeben werden, den Entitäts Eigenschaften im konzeptionellen Modell zu.The ResultBinding element in mapping specification language (MSL) maps column values that are returned by stored procedures to entity properties in the conceptual model when entity type modification functions are mapped to stored procedures in the underlying database. Wenn z. b. der Wert einer Identitäts Spalte von einer gespeicherten INSERT-Prozedur zurückgegeben wird, ordnet das ResultBinding -Element den zurückgegebenen Wert einer Entitätstyp Eigenschaft im konzeptionellen Modell zu.For example, when the value of an identity column is returned by an insert stored procedure, the ResultBinding element maps the returned value to an entity type property in the conceptual model.

Das ResultBinding -Element kann ein untergeordnetes Element des InsertFunction-Elements oder des UpdateFunction-Elements sein.The ResultBinding element can be child of the InsertFunction element or the UpdateFunction element.

Das ResultBinding -Element darf keine untergeordneten Elemente aufweisen.The ResultBinding element cannot have any child elements.

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die für das ResultBinding -Element anwendbar sind:The following table describes the attributes that are applicable to the ResultBinding element:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name der Entitätseigenschaft im konzeptionellen Modell, die zugeordnet wird.The name of the entity property in the conceptual model that is being mapped.
ColumnNameColumnName JaYes Der Name der Spalte, die zugeordnet wird.The name of the column being mapped.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt ein InsertFunction -Element, das verwendet wird, um die Einfügefunktion des Entitäts Typs " Person " der gespeicherten Prozedur InsertPerson zuzuordnen.The following example is based on the School model and shows an InsertFunction element used to map the insert function of the Person entity type to the InsertPerson stored procedure. (Die gespeicherte Prozedur InsertPerson wird im folgenden dargestellt und im Speichermodell deklariert.) Ein ResultBinding -Element wird verwendet, um einen Spaltenwert, der von der gespeicherten Prozedur (NewPersonID) zurückgegeben wird, einer Entitätstyp Eigenschaft (PersonID) zuzuordnen.(The InsertPerson stored procedure is shown below and is declared in the storage model.) A ResultBinding element is used to map a column value that is returned by the stored procedure (NewPersonID) to an entity type property (PersonID).

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

Das folgende Transact-SQL beschreibt die gespeicherte Prozedur InsertPerson :The following Transact-SQL describes the InsertPerson stored procedure:

 CREATE PROCEDURE [dbo].[InsertPerson]
                                @LastName nvarchar(50),
                                @FirstName nvarchar(50),
                                @HireDate datetime,
                                @EnrollmentDate datetime
                                AS
                                INSERT INTO dbo.Person (LastName,
                                                                             FirstName,
                                                                             HireDate,
                                                                             EnrollmentDate)
                                VALUES (@LastName,
                                               @FirstName,
                                               @HireDate,
                                               @EnrollmentDate);
                                SELECT SCOPE_IDENTITY() as NewPersonID;

ResultMapping-Element (MSL)ResultMapping Element (MSL)

Das resultmapping -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnung zwischen einem Funktions Import im konzeptionellen Modell und einer gespeicherten Prozedur in der zugrunde liegenden Datenbank, wenn Folgendes zutrifft:The ResultMapping element in mapping specification language (MSL) defines the mapping between a function import in the conceptual model and a stored procedure in the underlying database when the following are true:

  • Der Funktionsimport gibt einen Entitätstyp des konzeptionellen Modells oder einen komplexen Typ zurück.The function import returns a conceptual model entity type or complex type.
  • Die Namen der Spalten, die von der gespeicherten Prozedur zurückgegeben werden, entsprechen nicht exakt den Namen der Eigenschaften für den Entitätstyp oder den komplexem Typ.The names of the columns returned by the stored procedure do not exactly match the names of the properties on the entity type or complex type.

Standardmäßig basiert die Zuordnung der von einer gespeicherten Prozedur zurückgegebenen Spalten zu einem Entitätstyp oder einem komplexen Typ auf den Spalten- und Eigenschaftennamen.By default, the mapping between the columns returned by a stored procedure and an entity type or complex type is based on column and property names. Wenn Spaltennamen nicht exakt mit Eigenschaftsnamen übereinstimmen, müssen Sie das resultmapping -Element verwenden, um die Zuordnung zu definieren.If column names do not exactly match property names, you must use the ResultMapping element to define the mapping. Ein Beispiel für die Standard Zuordnung finden Sie unter FunctionImportMapping-Element (MSL).For an example of the default mapping, see FunctionImportMapping Element (MSL).

Das resultmapping -Element ist ein untergeordnetes Element des FunctionImportMapping-Elements.The ResultMapping element is a child element of the FunctionImportMapping element.

Das resultmapping -Element kann die folgenden untergeordneten Elemente aufweisen:The ResultMapping element can have the following child elements:

  • EntityTypeMapping (0 (null) oder mehr)EntityTypeMapping (zero or more)
  • ComplexTypeMappingComplexTypeMapping

Für das resultmapping -Element sind keine Attribute anwendbar.No attributes are applicable to the ResultMapping Element.

BeispielExample

Sehen Sie sich die folgende gespeicherte Prozedur an:Consider the following stored procedure:

 CREATE PROCEDURE [dbo].[GetGrades]
             @student_Id int
             AS
             SELECT     EnrollmentID as enroll_id,
                                                                             Grade as grade,
                                                                             CourseID as course_id,
                                                                             StudentID as student_id
                                               FROM dbo.StudentGrade
             WHERE StudentID = @student_Id

Betrachten Sie auch den folgenden Entitätstyp des konzeptionellen Modells:Also consider the following conceptual model entity type:

 <EntityType Name="StudentGrade">
   <Key>
     <PropertyRef Name="EnrollmentID" />
   </Key>
   <Property Name="EnrollmentID" Type="Int32" Nullable="false"
             annotation:StoreGeneratedPattern="Identity" />
   <Property Name="CourseID" Type="Int32" Nullable="false" />
   <Property Name="StudentID" Type="Int32" Nullable="false" />
   <Property Name="Grade" Type="Decimal" Precision="3" Scale="2" />
 </EntityType>

Um einen Funktions Import zu erstellen, der Instanzen des vorherigen Entitäts Typs zurückgibt, muss die Zuordnung zwischen den Spalten, die von der gespeicherten Prozedur zurückgegeben werden, und dem Entitätstyp in einem resultmapping -Element definiert werden:In order to create a function import that returns instances of the previous entity type, the mapping between the columns returned by the stored procedure and the entity type must be defined in a ResultMapping element:

 <FunctionImportMapping FunctionImportName="GetGrades"
                        FunctionName="SchoolModel.Store.GetGrades" >
   <ResultMapping>
     <EntityTypeMapping TypeName="SchoolModel.StudentGrade">
       <ScalarProperty Name="EnrollmentID" ColumnName="enroll_id"/>
       <ScalarProperty Name="CourseID" ColumnName="course_id"/>
       <ScalarProperty Name="StudentID" ColumnName="student_id"/>
       <ScalarProperty Name="Grade" ColumnName="grade"/>
     </EntityTypeMapping>
   </ResultMapping>
 </FunctionImportMapping>

ScalarProperty-Element (MSL)ScalarProperty Element (MSL)

Das ScalarProperty -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet eine Eigenschaft einem Entitätstyp des konzeptionellen Modells, einem komplexen Typ oder einer Zuordnung zu einer Tabellenspalte oder einem Parameter einer gespeicherten Prozedur in der zugrunde liegenden Datenbank zuThe ScalarProperty element in mapping specification language (MSL) maps a property on a conceptual model entity type, complex type, or association to a table column or stored procedure parameter in the underlying database.

Hinweis

Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden.Stored procedures to which modification functions are mapped must be declared in the storage model. Weitere Informationen finden Sie unter Function-Element (SSDL).For more information, see Function Element (SSDL).

Das ScalarProperty -Element kann ein untergeordnetes Element der folgenden Elemente sein:The ScalarProperty element can be a child of the following elements:

  • MappingFragmentMappingFragment
  • InsertFunctionInsertFunction
  • UpdateFunctionUpdateFunction
  • DeleteFunctionDeleteFunction
  • EndPropertyEndProperty
  • ComplexPropertyComplexProperty
  • ResultMappingResultMapping

Als untergeordnetes Element des Elements MappingFragment, ComplexPropertyoder EndProperty ordnet das ScalarProperty -Element eine Eigenschaft im konzeptionellen Modell einer Spalte in der Datenbank zu.As a child of the MappingFragment, ComplexProperty, or EndProperty element, the ScalarProperty element maps a property in the conceptual model to a column in the database. Als untergeordnetes Element des Elements InsertFunction, UpdateFunctionoder DeleteFunction ordnet das ScalarProperty -Element eine Eigenschaft im konzeptionellen Modell einem Parameter für gespeicherte Prozeduren zu.As a child of the InsertFunction, UpdateFunction, or DeleteFunction element, the ScalarProperty element maps a property in the conceptual model to a stored procedure parameter.

Das ScalarProperty -Element darf keine untergeordneten Elemente aufweisen.The ScalarProperty element cannot have any child elements.

Anwendbare AttributeApplicable Attributes

Die Attribute, die auf das ScalarProperty -Element angewendet werden, unterscheiden sich abhängig von der Rolle des Elements.The attributes that apply to the ScalarProperty element differ depending on the role of the element.

In der folgenden Tabelle werden die Attribute beschrieben, die anwendbar sind, wenn das ScalarProperty -Element verwendet wird, um einer Spalte in der Datenbank eine Eigenschaft eines konzeptionellen Modells zuzuordnen:The following table describes the attributes that are applicable when the ScalarProperty element is used to map a conceptual model property to a column in the database:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name der Eigenschaft im konzeptionellen Modell, die zugeordnet wird.The name of the conceptual model property that is being mapped.
ColumnNameColumnName JaYes Der Name der Tabellenspalte, die zugeordnet wird.The name of the table column that is being mapped.

In der folgenden Tabelle werden die Attribute beschrieben, die für das ScalarProperty -Element gelten, wenn es verwendet wird, um eine Eigenschaft des konzeptionellen Modells einem Parameter für gespeicherte Prozeduren zuzuordnen:The following table describes the attributes that are applicable to the ScalarProperty element when it is used to map a conceptual model property to a stored procedure parameter:

AttributnameAttribute Name Ist erforderlichIs Required WertValue
NameName JaYes Der Name der Eigenschaft im konzeptionellen Modell, die zugeordnet wird.The name of the conceptual model property that is being mapped.
Parameter NameParameterName JaYes Der Name des Parameters, der zugeordnet wird.The name of the parameter that is being mapped.
VersionVersion NeinNo Current oder Original , abhängig davon, ob der aktuelle Wert oder der ursprüngliche Wert der-Eigenschaft für Parallelitäts Überprüfungen verwendet werden soll.Current or Original depending on whether the current value or the original value of the property should be used for concurrency checks.

BeispielExample

Das folgende Beispiel zeigt das ScalarProperty -Element, das auf zweierlei Weise verwendet wird:The following example shows the ScalarProperty element used in two ways:

  • , Um die Eigenschaften des Entitäts Typs Person den Spalten der Person-Tabelle zuzuordnen.To map the properties of the Person entity type to the columns of the Persontable.
  • , Um die Eigenschaften des Entitäts Typs Person den Parametern der gespeicherten Prozedur updateperson zuzuordnen.To map the properties of the Person entity type to the parameters of the UpdatePerson stored procedure. Die gespeicherten Prozeduren werden im Speichermodell deklariert.The stored procedures are declared in the storage model.
 <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>

BeispielExample

Das nächste Beispiel zeigt das ScalarProperty -Element, das verwendet wird, um die INSERT-und DELETE-Funktionen einer konzeptionellen Modell Zuordnung gespeicherten Prozeduren in der Datenbank zuzuordnen.The next example shows the ScalarProperty element used to map the insert and delete functions of a conceptual model association to stored procedures in the database. Die gespeicherten Prozeduren werden im Speichermodell deklariert.The stored procedures are declared in the storage model.

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

UpdateFunction-Element (MSL)UpdateFunction Element (MSL)

Das UpdateFunction -Element in der Mapping-Spezifikationssprache (Mapping Specification Language, MSL) ordnet die Aktualisierungs Funktion eines Entitäts Typs im konzeptionellen Modell einer gespeicherten Prozedur in der zugrunde liegenden Datenbank zu.The UpdateFunction element in mapping specification language (MSL) maps the update function of an entity type in the conceptual model to a stored procedure in the underlying database. Gespeicherte Prozeduren, denen Änderungsfunktionen zugeordnet werden, müssen im Speichermodell deklariert werden.Stored procedures to which modification functions are mapped must be declared in the storage model. Weitere Informationen finden Sie unter Function-Element (SSDL).For more information, see Function Element (SSDL).

Hinweis

Wenn Sie nicht alle drei Einfüge-, Aktualisierungs-oder Löschvorgänge eines Entitäts Typs gespeicherten Prozeduren zuordnen, schlagen die nicht zugeordneten Vorgänge fehl, wenn Sie zur Laufzeit ausgeführt werden und eine Update Exception ausgelöst wird.If you do not map all three of the insert, update, or delete operations of a entity type to stored procedures, the unmapped operations will fail if executed at runtime and an UpdateException is thrown.

Das UpdateFunction -Element kann ein untergeordnetes Element des ModificationFunctionMapping-Elements sein und auf das EntityTypeMapping-Element angewendet werden.The UpdateFunction element can be a child of the ModificationFunctionMapping element and applied to the EntityTypeMapping element.

Das UpdateFunction -Element kann die folgenden untergeordneten Elemente aufweisen:The UpdateFunction element can have the following child elements:

  • AssociationEnd (null (0) oder mehr)AssociationEnd (zero or more)
  • ComplexProperty (0 (null) oder mehr)ComplexProperty (zero or more)
  • ResultBinding (0 (null) oder einer)ResultBinding (zero or one)
  • ScalarProperty (null (0) oder mehr)ScarlarProperty (zero or more)

Anwendbare AttributeApplicable Attributes

In der folgenden Tabelle werden die Attribute beschrieben, die auf das UpdateFunction -Element angewendet werden können.The following table describes the attributes that can be applied to the UpdateFunction element.

AttributnameAttribute Name Ist erforderlichIs Required WertValue
FunctionNameFunctionName JaYes Der mit einem Namespace qualifizierte Name der gespeicherten Prozedur, der die Aktualisierungsfunktion zugeordnet wird.The namespace-qualified name of the stored procedure to which the update function is mapped. Die gespeicherte Prozedur muss im Speichermodell deklariert werden.The stored procedure must be declared in the storage model.
RowsaffectedparameterRowsAffectedParameter NeinNo Der Name des Ausgabeparameters, der die Anzahl der betroffenen Zeilen zurückgibt.The name of the output parameter that returns the number of rows affected.

BeispielExample

Das folgende Beispiel basiert auf dem Modell "School" und zeigt das UpdateFunction -Element, das verwendet wird, um die Aktualisierungs Funktion des Entitäts Typs " Person " der gespeicherten Prozedur " updateperson " zuzuordnen.The following example is based on the School model and shows the UpdateFunction element used to map update function of the Person entity type to the UpdatePerson stored procedure. Die gespeicherte Prozedur updateperson wird im Speichermodell deklariert.The UpdatePerson stored procedure is declared in the storage model.

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