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


Атрибут Namespace (язык CSDL)

Имя пространства имен, объявленное на языке CSDL, выполняет несколько функций в модели Entity Data Model (модель EDM). Чтобы процесс построения смог подключить программируемые классы к структурам хранилищ, в которых сохраняются данные для приложений, типы и контейнеры в CSDL-схеме должны быть сопоставлены с метаданными хранилища. Язык MSL соединяет концептуальные типы с определениями в языке SSDL, описывающими модель хранения.

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

using AdventureWorksHRModel;

Пространство имен, объявленное в CSDL-схеме, также идентифицирует данную модель объектов в файле exe.config, необходимом для приложений модели EDM. В этом примере в строку соединения включено имя класса HumanResources. Это имя класса основано на имени контейнера сущности.

Дополнительные сведения о контейнерах сущностей см. в разделе Контейнеры сущностей (модель EDM).

<connectionStrings>
    <add name="HumanResources" connectionString='metadata=.;
    provider=System.Data.SqlClient; provider connection 
                                          string="server=servername;
    database=AdventureWorks; integrated security=true;
    multipleactiveresultsets=true"' providerName="System.Data.Mapping"/>
</connectionStrings>

После того как приведенная выше строка соединения была добавлена в файл exe.config, чтобы создать экземпляр HumanResources EntityConnection, который в дальнейшем будет использоваться кодом приложения, необходимо выполнить следующую инструкцию.

HumanResources hrDb = new HumanResources();

Пространство имен и сопоставление

Элемент Schema CSDL-схемы содержит имя пространства имен, используемого для определения модели объектов.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
        Alias="Self"
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm">

SSDL-файл содержит похожую строку.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRTarget"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm/ssdl">

Имена пространств имен, используемые в этих декларациях, отражают их задачи в создаваемой модели данных. AdventureWorksHRModel — это концептуальная модель, сопоставленная с целевом пространством имен метаданных AdventureWorksHRTarget.

Элементы EntityContainer в концептуальной схеме и схеме хранилища не зависят от элементов Schema , хотя они и содержатся в элементах Schema . В спецификации сопоставления элемент EntityContainerMapping выполняет сопоставление двух пространств имен, используя ссылки на их объекты-контейнеры, без использования ссылок на имена пространств имен: edm:CdmEntityContainer="HumanResources"``edm:StorageEntityContainer="HumanResources".

Следующий заголовок MSL показывает сопоставление между контейнером сущностей HumanResources в концептуальной схеме (здесь он называется CdmEntityContainer) и метаданными хранилища (здесь они называются StorageEntityContainer).

<?xml version="1.0" encoding="utf-8"?>
<Mapping edm:Space="C-S" 
    xmlns:edm="urn:schemas-microsoft-com:windows:storage:mapping:CS" 
  <EntityContainerMapping CdmEntityContainer="HumanResources" 
StorageEntityContainer="HumanResources">

Alias

Атрибут Namespace языка CSDL имеет связанный атрибут Alias, который можно использовать для сокращения длины имен пространств имен в пределах схемы. В следующем примере атрибуту Alias назначается строка Self.

<?xml version="1.0" encoding="utf-8"?>
<Schema Namespace="AdventureWorksHRModel"
        Alias="Self" 
        xmlns="https://schemas.microsoft.com/ado/2006/04/edm">

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

  <EntityContainer Name="HumanResources">
    <EntitySet Name="Department" EntityType="Self.Department" />
    <EntitySet Name="Employee" EntityType="Self.Employee" />
    <EntitySet Name="EmployeeAddress" EntityType="Self.EmployeeAddress" />

Xmlns

В предыдущем примере также содержится атрибут xmlns, которому назначен URL-адрес. Во всех CSDL-схемах используется один и тот же URL-адрес.

См. также

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

Схема метаданных хранилища (язык SSDL)
Спецификация сопоставления (язык MSL)
Полная модель AdventureWorks (модель EDM)