概念架构 (CSDL)
概念性架构是一个设计模板,用于设计在 实体数据模型 (EDM) 上构建的应用程序将使用的对象模型。概念性架构中声明的命名空间名称将用来限定生成的对象模型中的实体和关联类。
EDM 体系结构提供实体和关联的基本结构。应用程序设计者基于这些类型派生实体和关联。概念性架构中定义的类型将映射到描述存储模型的元数据。
概念性架构使用称为概念性架构定义语言 (CSDL) 的 XML 方言。存储元数据使用称为存储架构定义语言 (SSDL) 的 XML 方言。
注意 |
---|
CSDL 命名空间与 XML 命名空间不同。CSDL 命名空间用于完全限定实体类型名称和关联名称。例如,当映射架构语言 (MSL) 引用实体类型时,必须提供完全限定的名称。而且,在生成类时,将在同名的 CLR 命名空间中创建这些类。CSDL 位于 XML 命名空间 |
命名空间和映射
概念性架构的根元素是 Schema 元素。它包含 Namespace 属性,该属性用于指定 CSDL 命名空间。在映射规范中使用该命名空间将 CSDL 类型连接到存储元数据。
下面来自 CSDL 架构的声明中包含的命名空间用于在映射规范中将示例应用程序 AdventureWorksHRModel 中的实体和关联映射到存储元数据。
<?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 的概念性模型。
概念性和存储架构中的实体容器元素独立于 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="urn:schemas-microsoft-com:windows:storage:mapping:CS">
<EntityContainerMapping CdmEntityContainer="HumanResources"
StorageEntityContainer="HumanResources">
其他 CSDL 架构元素在映射规范中以类似方式映射到 SSDL 规范。本节中的主题介绍用于实现 EDM 上构建的对象模型的类型和元素。
本节内容
另请参见
概念
实现实体 (EDM)
实现关联 (EDM)
AdventureWorks 完整模型 (EDM)