Атрибут 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)