陈斌彬的技术博客

Stay foolish,stay hungry

EDM 之 MSL

这个文件即上面所述的CSDL 与SSDL 的对应,主要包括CSDL 中属性与SSDL 中列的对应。 img img img

如上代码所示,M SL的根节点为Mapping,其 中可以包含多个EntityContainerMapping( 上例只有一个),每一个EntityContainerMapping对应着两个分别来自CSDL与SSDL的EntityContainer。这 个EntityContainerMapping 就是描述这两个EntityContainer 间的对应。下面再给出一段代码展示EntityContainerMapping 的基本格式。

img

同上文,下面列出这些节点的属性

img img img img

说明1:以上表中很重要的一个属性是MappingFragment 中的StoreEntitySet 属性,就像这个属性的说明 中所说,其描述了CSDL 的Entity 对应到的SSDL 的Entity 的名称。这是实现下文EDM 映射方案中第二 条将一个概念模型的实体映射到多个存储模型的实体的关键设置。

说明2:Contain 这个元素及其属性的作用是,当多个概念模型实体映射到一个存储模型实体时,该元素的 属性决定了在什么情况下一个概念模型实体映射到指定的存储模型实体。

说明3:QueryView 元素定义概念模型中的实体与存储模型中的实体之间的只读映射。使用根据存储模型 计算的 Entity SQL 查询定义此查询视图映射,并以概念模型中的实体表达结果集。同DefiningQuery 定 义的查询。此映射也是只读的。就是说如果想要更新此类EntitySet,也需要使用下文介绍存储过程时提到 的定义更新实体的存储过程的方法,使用定义的存储过程来更新这样的EntitySet。当多对多关联在存储模 型中所映射到的实体表示关系架构中的链接表时,必须为此链接表在AssociationSetMapping 元素中定义 一个QueryView 元素。定义查询视图时,不能在 AssociactionSetMapping 元素上指定 StorageSetName 属性。定义查询视图时,AssociationSetMapping 元素不能同时包含 EndProperty 映射。