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


Основные понятия CSDL

Язык определения концептуальной схемы (CSDL) основан на среде Entity Data Framework, которая представляет собой абстракцию, представляющую различные типы данных способом, который позволяет использовать разделенные наборы данных так, чтобы их можно было программно оценивать, опрашивать или экспортировать. Язык CSDL используется для представления табличных моделей отчетности, поскольку он хорошо подходит для определения приложений, управляемых данными.

В этом разделе описано то, как модель данных применяется к табличным моделям, и содержатся примеры того, как модель представляется в языке CSDL.

Примеры, которые используются для иллюстрации этих основных понятий, взяты из образца базы данных AdventureWorks, доступном на узле Codeplex. Дополнительные сведения об этих образцах см. в статье Образцы Adventure Works для SQL Server.

Структура модели в языке CSDL

Документ языка CSDL, в котором описана модель отчета и данные в нем, начинается с XSD-инструкции, за которой следует определение модели.

Эта модель обладает пространством имен, которое содержит следующие основные сущности, взаимосвязи и свойства.

  • В EntityContainer приведен список таблиц в модели.

  • Каждая таблица отображается с EntityContainer в качестве EntitySet.

  • Каждая связь между двумя таблицами описана в виде AssociationSet, в котором определяются конечные точки и роли связи.

  • Элемент EntityType расширен для BISM, чтобы предоставлять дополнительные сведения о таблицах и столбцах в них, включая свойства для сортировки и отображения.

  • Элемент Measure определяет вычисления, которые могут использоваться в модели. Меру можно превратить в KPI путем добавления набора особых атрибутов отображения при помощи нового элемента KPI.

  • Отдельного представления перспектив не существует. Столбцы и таблицы, не включенные в перспективу, присутствуют в языке CSDL, однако они отмечены атрибутом Hidden.

Сущности, EntitySets и EntityTypes

Упоминание сущности в Entity Data Framework расширено на представление столбцов и таблиц из модели данных. В следующем фрагменте представлен список элементов EntitySet в простой модели, содержащей только три таблицы.

<EntityContainer Name="SimpleModel">
<EntitySet Name="DimCustomer"EntityType="SimpleModel.DimCustomer">
     <bi:EntitySet />
   </EntitySet>
<EntitySet Name="DimDate" EntityType="SimpleModel.DimDate">
     <bi:EntitySet />
   </EntitySet>
<EntitySet Name="DimGeography" EntityType="SimpleModel.DimGeography">
     <bi:EntitySet />
   </EntitySet> />

EntitySet не содержит сведений о столбцах или данных в таблице. Детальное описание столбцов и их свойств предоставляется элементом EntityType.

Элемент EntityType для каждой сущности (таблицы) включает коллекцию свойств, которые определяют ключевой столбец, тип данных, длину столбца, допустимость значений NULL, поведение при сортировке и т. п. Например, в следующем фрагменте языка CSDL описываются три столбца в таблице «Клиент». Первым столбцом является особый скрытый столбец, который используется моделью для внутренних целей.

<EntityType Name="Customer">
  <Key>
     <PropertyRef Name="RowNumber" />
  </Key>
    <Property Name="RowNumber" Type="Int64" Nullable="false">
     <bi:Property Hidden="true" Contents="RowNumber"
       Stability="RowNumber" />
    </Property>
    <Property Name="CustomerKey" Type="Int64" Nullable="false">
      <bi:Property />
    </Property>
     <Property Name="FirstName" Type="String" MaxLength="Max" FixedLength="false">
       <bi:Property />
      </Property>

Чтобы ограничить размер создаваемого документа языка CSDL, свойства, которые появляются более одного раза в сущности, указываются путем ссылки на существующее свойство так, чтобы свойство помещалось в список только однажды для этого EntityType. Клиентское приложение может получить значение свойства путем нахождения EntityType, соответствующего OriginEntityType.

Связи

В Entity Data Framework связи определяются как ассоциации между сущностями.

У ассоциации всегда имеется две конечные точки, каждая из которых указывает на поле или столбец в таблице. Поэтому между двумя таблицами могут существовать множественные связи, если у этих связей имеются разные конечные точки. Имя роли назначается конечным точкам ассоциации и указывает на то, как используется ассоциация в контексте модели данных. Примером имени роли может быть ShipTo при применении к идентификатору клиента, который связан с идентификатором клиента в таблице Заказы.

Представление языка CSDL модели также содержит атрибуты ассоциации, которые определяют, как сущности сопоставляются друг с другом в контексте количества элементов ассоциаций. Количество элементов указывает, находится атрибут или столбец в конечной точке связи между таблицами с одной стороны связи или с нескольких сторон. Для связи «один к одному» отсутствует отдельное значение. Расширения BISM для CSDL поддерживают значение количества элементов 0 (что означает, что сущность не связана ни с чем) или 0..1, что означает существование связи «один к одному» или «один ко многим».

На следующем образце представлено определение языка CSDL для связи между таблицами с названием Date и ProductInventory, где две таблицы соединяются в столбец DateAlternateKey. Обратите внимание, что по умолчанию имя AssociationSet является полным именем столбцов, участвующих в связи. Однако вы можете изменить это поведение при разработке модели так, чтобы в ней использовался другой формат имен.

<AssociationSet Name="ProductInventory_Date_DateKey" Association="Model.ProductInventory_Date_DateKey">
              <End EntitySet="ProductInventory" />
              <End EntitySet="Date" />
              <bi:AssociationSet />
            </AssociationSet>

Свойства визуализации и навигации

Важной частью расширений Entity Data Framework для табличного моделирования, а также для навигации по связям между сущностями являются свойства определения представления на уровне отчета. Обычно при создании модели данных не придается особого значения тому, как данные упорядочены, сгруппированы или каково их значение по умолчанию, исходя из того, что клиентское приложение укажет порядок и другие данные представления. Однако табличные модели службы Службы Analysis Services разработаны для интеграции с клиентом отчетов Power View. Они содержат свойства и атрибуты, которые поддерживают представление сущностей из модели данных в область конструктора отчета.

Расширения для преставления включают атрибуты для указания значений сбора данных по умолчанию, которые будут использоваться с цифровыми данными для индикации того, что текстовое поле указывает на URL-адрес изображения, либо для назначения поля, используемого для сортировки текущего поля.

Свойства имени и контекст именования

Спецификация языка CSDL предоставляет каждой сущности уникальное имя и идентификатор, которые могут использоваться как ключ. Кроме того, некоторые сущности могут иметь заголовки, используемые для отображения, а также контекстные имена, которые изменяются в зависимости от места использования конкретной сущности.

Элемент «Documentation» позволяет конструкторам отчетов задавать описания сущности, которые помогают бизнес-пользователям понимать значение данных. Некоторые сущности также позволяют использовать один или несколько атрибутов Annotation, которые предоставляют дополнительные метаданные приложению или клиентам.

При создании модели при помощи средств Службы Analysis Services создаваемые имена объектов назначаются в соответствии с соглашением об именах объектов служб Analysis Services и обеспечивают уникальность имен. Однако, поскольку язык CSDL является частью среды Entity Data Framework, для которой необходимо, чтобы имена отвечали требованиям соглашения об именах идентификаторов C#, когда сервер создает язык CSDL для модели, он берет имена, используемые в схеме Службы Analysis Services, и автоматически создает новые имена объектов, которые соответствуют требованиям языка CSDL. В следующей таблице описаны действия, необходимые для создания новых имен.

Правило

Действие

Пример

Отсутствуют запрещенные символы

Запрещенные символы заменяются на символ подчеркивания.

Пример на стадии разработки

Имена должны быть уникальными

Если две строки одинаковы, одна из них становится уникальной путем добавления символа подчеркивания и номера

пример на стадии разработки

Заголовки и квалификаторы обладают переводами, и для каждого конкретного языка может присутствовать либо заголовок, либо квалификатор. Это означает, что, когда квалификатор с именем или квалификатор с заголовком слиты, строки могут быть на разных языках.

См. также

Основные понятия

Введение в расширения языка CSDL для табличных моделей