我在 Visual Studio 2010 中使用 EF4。我已经创建了一个 SQL 数据库,并且我的所有列都记录在 SQL 管理工作室中的 Description 属性中。当我在 Visual Studio 中创建 edmx 时,如何让它读取这些描述并使用它们向我生成的类添加注释?我知道我可以在 edmx 属性中使用 Summary 和 LongDescription,但我正在寻找一种方法来做到这一点,而不必复制和粘贴每个描述。
谢谢!
我在 Visual Studio 2010 中使用 EF4。我已经创建了一个 SQL 数据库,并且我的所有列都记录在 SQL 管理工作室中的 Description 属性中。当我在 Visual Studio 中创建 edmx 时,如何让它读取这些描述并使用它们向我生成的类添加注释?我知道我可以在 edmx 属性中使用 Summary 和 LongDescription,但我正在寻找一种方法来做到这一点,而不必复制和粘贴每个描述。
谢谢!
对此有一个功能请求。随时添加您的投票,以帮助将来提供此功能: 检索实体框架功能请求中的 SQL 描述
Huagati 有一些很好的工具来处理 EF 和 L2S。功能之一是更新基于 SQL 数据库的 EF 文档: Huagati 网站
从网站:从数据库更新 ADO.NET 实体数据模型文档从数据库检索自由文本表和列描述以及索引定义,并使用描述更新 EDMX 设计器中的 xml 文档字段。
似乎他们在数据库中查找这些字段,然后直接更新模型 XML。如果这是您想要的唯一功能,可能有人可以创建一个 VS 加载项,它可以在没有价格的情况下做同样的事情。我会把它添加到我的“未来”项目列表中(尽管我似乎从来没有时间做这些!)。
希望有帮助!
我一直在寻找将某些东西组合在一起以使用数据库中的元数据填充 edmx 的方法。
摘要和详细描述 edmx 属性存储在 EntityType 元素下的元素中。
<EntityType Name="EntityName">
<!-- Without this element classes are typically generated with
"No Metadata Documentation available." -->
<Documentation>
<Summary>Entity Summary</Summary>
<LongDescription>Entity Long Description</LongDescription>
</Documentation>
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="String" Nullable="false" MaxLength="25" Unicode="false" FixedLength="true" />
<!-- Lots of other properties -->
</EntityType>
edmx 文件的相关部分,即存储模式定义语言 (SSDL),由System.Data.Entity.Design.EntityStoreSchemaGenerator.GenerateStoreMetadata()创建。或者至少 EdmGen 就是这种情况。
我将查看EntityStoreSchemaGenerator.StoreItemCollection在被 EntityStoreSchemaGenerator.WriteStoreSchema(...) 用于输出 XML 之前是否可以修改。
更新
那很烦人。System.Data.Metadata.Edm.Documentation是密封的,只有一个内部构造函数。这两个感兴趣的属性也只能在内部设置。所以这似乎是一个死胡同。
我不知道设计器本身有什么可扩展点。但是,一旦在您的 edmx 文件中填充了 Summary 和 LongDescription 字段,这些值将保留在那里,即使您进行了其他更改或从数据库重新更新了您的模型。除非您删除表并重新添加它,否则这些值将保持填充状态。
因此,您可以一次复制并粘贴它们(模型中有多少表?这比您想象的要快),或者编写一个程序从数据库中提取信息(使用 SQL SMO 或其他东西) ,并让该程序编辑您的 edmx 文件,填充摘要和 LongDescription 字段(每次尝试您的程序时备份您的 edmx ——您不想破坏您的 edmx 文件而必须重新开始)。
如果您有大型模型,并且您正在制作大量模型,那么编写一个自动完成它的程序是值得您花时间的。如果您只有几个模型,没有太多表格,请复制粘贴。
您可能要考虑在此处向 Entity Framework 团队提交反馈。似乎设计人员应该自动从 SQL Server 中获取描述字段。会提出很好的功能要求。