提取SQL Server扩展属性作为EF 4.0 Entites的一部分或在T4模板中运行存储过程

use*_*258 6 t4 entity-framework

我想看看当从数据库生成或更新.edmx时,是否可以将扩展属性作为EF 4.0中实体的一部分.我还想看一个在T4模板中从.edmx运行存储过程(函数)的例子,因为我有一个返回Extended Prop值的过程.

谢谢

Dev*_*ime 2

因此,这里需要记住以下几点:

  • 设计器并不是真正可扩展的,但提供者却可以。这并没有多大帮助,因为编写 EF 提供程序并不是一件容易的事。这真的很复杂。
  • 与设计器相关的代码,包括与元数据相关的代码,大部分是密封的、内部的,您几乎完全无法使用。
  • 但是,EDMX 文件(XML 文件本身)有很好的文档记录:http://msdn.microsoft.com/en-us/data/jj650889 ...您可以自己自由修改 XML(手动或通过某些添加-in 或外部实用程序),只要您遵守规范。

总体思路是,您可以使用自己的工具来读取扩展属性并更改 EDMX XML。

您将向 SSDL(在 EDMX 中存储元数据)元素添加“注释”。这些注释值将基于数据库中相关实体的扩展属性。

随后,当 T4 执行时,T4 接收基于 EDMX 元素的元数据集合。此元数据将包含您之前在此处编写的注释。几乎任何元素都可以有一个或多个注释。然后,您可以将自定义代码添加到 T4 模板来处理基于扩展属性的注释。设计器不会显示注释,并且您无法在设计器中操作它们,但它应该保留它们(如果它们存在于 EDMX 中,则不会覆盖它们)。

当然,如果设计器是可扩展的,或者即使与设计器相关的代码可供您使用,这会容易得多。现在,情况并非如此。EF 的大部分部分正在转向开源,但设计者仍然不存在(还)。如果设计师曾经进入开源领域,那么您可能可以进行更改以开始使用它 - 并且考虑到社区不断要求这种功能,我想社区无论如何都会更改源代码以使其发生。在此之前,您必须手动编辑 EDMX 或编写一些工具来为您完成此操作。