Элемент 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)