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

时间:2011-03-03 17:15:31

标签: entity-framework t4

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

由于

1 个答案:

答案 0 :(得分:2)

所以,请记住以下几点:

  • 设计师不是真正可扩展的,但提供者是。这并没有多大帮助,因为写一个EF提供商是而不是在公园散步。这真的很复杂。
  • 与设计师相关的代码,包括与元数据相关的位,大部分是密封的,内部的,几乎完全无法使用。
  • 但是,EDMX文件(XML文件本身)已有详细记录:http://msdn.microsoft.com/en-us/data/jj650889 ...只要您遵守规范,您就可以自己(通过手工或通过一些插件或外部实用程序)自由修改XML。

一般的想法是,您可以使用自己的工具来读取扩展属性并更改EDMX XML。

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

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

当然,如果设计人员可扩展,或者即使您可以使用与设计人员相关的代码,这也会容易得多。现在,事实并非如此。 EF的大多数部分正在转向开源,但设计师仍然没有(尚未)。如果设计师进入开源,那么你可能会做出改变以开始使用它 - 并且考虑到社区一直在要求这种功能,我想社区将改变源代码以实现它。在此之前,您必须手动编辑EDMX或编写一些工具来为您完成。