Поделиться через


Элемент AssociationEnd (язык MSL)

Элемент AssociationEnd в языке MSL служит при сопоставлении функций изменения типа сущности в концептуальной модели с хранимыми процедурами в основной базе данных. Если хранимая процедура изменения принимает параметр, значение которого содержится в свойстве ассоциации, то элемент AssociationEnd сопоставляет значение свойства с этим параметром. Дополнительные сведения см. в приведенных ниже примерах.

Дополнительные сведения о сопоставлении функций изменения типов сущностей с хранимыми процедурами см. в разделах Элемент ModificationFunctionMapping (язык MSL) и Walkthrough: Mapping an Entity to Stored Procedures.

Элемент AssociationEnd может иметь следующие дочерние элементы.

Применимые атрибуты

В следующей таблице описываются атрибуты, которые применимы к элементу AssociationEnd.

Имя атрибута Необходимо Значение

AssociationSet

Да

Имя сопоставляемой ассоциации.

From

Да

Значение атрибута FromRole свойства навигации, которое отвечает сопоставляемой ассоциации. Дополнительные сведения см. в разделе Элемент NavigationProperty (язык CSDL).

To

Да

Значение атрибута ToRole свойства навигации, которое отвечает сопоставляемой ассоциации. Дополнительные сведения см. в разделе Элемент NavigationProperty (язык CSDL).

Пример

Рассмотрим следующий тип сущности в концептуальной модели:

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

Предположим, имеется следующая хранимая процедура:

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;

Чтобы сопоставить функцию обновления сущности Course с этой хранимой процедурой, необходимо указать значение параметра DepartmentID. Значение для DepartmentID не соответствует свойству типа сущности. Оно содержится в независимом сопоставлении с сопоставлением, показанным ниже:

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

Следующий код показывает элемент AssociationEnd, который служит для сопоставления свойства DepartmentID ассоциации FK_Course_Department с хранимой процедурой UpdateCourse (которой сопоставлена функция обновления типа сущности Course):

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

См. также

Другие ресурсы

Спецификации языка CSDL, SSDL и MSL
Моделирование и сопоставление (платформа Entity Framework)