Атрибуты annotation (язык CSDL)
Атрибуты annotation в языке CSDL представляют собой настраиваемые атрибуты XML в концептуальной модели. Атрибуты annotation должны не только иметь допустимую структуру XML, но и соответствовать следующим требованиям:
Атрибуты annotation не должны находиться ни в одном пространстве имен XML, которое зарезервировано для языка CSDL.
К данному конкретному элементу языка CSDL может применяться несколько атрибутов annotation.
Полные имена любых двух атрибутов annotation не должны совпадать.
Атрибуты annotation могут использоваться для предоставления дополнительных метаданных об элементах в концептуальной модели. К метаданным, содержащимся в элементах заметки, можно обращаться во время выполнения с помощью классов из пространства имен System.Data.Metadata.Edm.
Пример
В следующем примере показан элемент EntityType с атрибутом annotation (CustomAttribute). В следующем примере показано применение элемента annotation к элементам типа сущности. Дополнительные сведения см. в разделе Элементы Annotation (CSDL).
<Schema Namespace="SchoolModel" Alias="Self"
xmlns:annotation="https://schemas.microsoft.com/ado/2009/02/edm/annotation"
xmlns="https://schemas.microsoft.com/ado/2008/09/edm">
<EntityContainer Name="SchoolEntities" annotation:LazyLoadingEnabled="true">
<EntitySet Name="People" EntityType="SchoolModel.Person" />
</EntityContainer>
<EntityType Name="Person" xmlns:p="http://CustomNamespace.com"
p:CustomAttribute="Data here.">
<Key>
<PropertyRef Name="PersonID" />
</Key>
<Property Name="PersonID" Type="Int32" Nullable="false"
annotation:StoreGeneratedPattern="Identity" />
<Property Name="LastName" Type="String" Nullable="false"
MaxLength="50" Unicode="true" FixedLength="false" />
<Property Name="FirstName" Type="String" Nullable="false"
MaxLength="50" Unicode="true" FixedLength="false" />
<Property Name="HireDate" Type="DateTime" />
<Property Name="EnrollmentDate" Type="DateTime" />
<p:CustomElement>
Custom metadata.
</p:CustomElement>
</EntityType>
</Schema>
Следующий код извлекает метаданные из атрибута annotation и выводит их на консоль:
Dim collection As New EdmItemCollection("School.csdl")
Dim workspace As New MetadataWorkspace()
workspace.RegisterItemCollection(collection)
Dim contentType As EdmType
workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, contentType)
If contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomAttribute") Then
Dim annotationProperty As MetadataProperty = _
contentType.MetadataProperties("http://CustomNamespace.com:CustomAttribute")
Dim annotationValue As Object = annotationProperty.Value
Console.WriteLine(annotationValue.ToString())
End If
EdmItemCollection collection = new EdmItemCollection("School.csdl");
MetadataWorkspace workspace = new MetadataWorkspace();
workspace.RegisterItemCollection(collection);
EdmType contentType;
workspace.TryGetType("Person", "SchoolModel", DataSpace.CSpace, out contentType);
if (contentType.MetadataProperties.Contains("http://CustomNamespace.com:CustomAttribute"))
{
MetadataProperty annotationProperty =
contentType.MetadataProperties["http://CustomNamespace.com:CustomAttribute"];
object annotationValue = annotationProperty.Value;
Console.WriteLine(annotationValue.ToString());
}
Вышеуказанный код предполагает, что файл School.csdl
находится в выходном каталоге проекта, а в проект добавлены инструкции Imports
и Using
:
Imports System.Data.Metadata.Edm
using System.Data.Metadata.Edm;
См. также
Основные понятия
Элементы Annotation (CSDL)
Спецификация языка CSDL