【问题标题】:How can I modify the default code generation strategy for edmx?如何修改 edmx 的默认代码生成策略?
【发布时间】:2011-06-21 11:26:26
【问题描述】:

我想修改默认的代码生成策略,该怎么做?

我只是想将类名从<#=code.Escape(container)#>修改为Entities并将默认连接字符串更改为name=Default

(我不想为项目创建模板文件,我想对其进行编辑,以便全局工作)

我搜索了.tt 文件,我只能找到ItemTemplates。我不知道默认生成的代码是什么,这是我要编辑的。

更新:我仍然不知道该怎么做。

【问题讨论】:

    标签: c# entity-framework templates entity-framework-4


    【解决方案1】:

    如果单击 EMDX 文件并在 Visual Studio 中检查文件属性,您可以看到生成代码的内容。查找Custom Tool 属性,该属性将告诉您将 EDMX XML 转换为可编译代码的生成器的类名。

    但是关于模型定制,我仍然建议您使用 T4 来获取您的 EDMX 并生成与原始生成器相同的代码。好消息是你可以操纵它,直到你想死为止。

    如果您打算在项目中的多个 EMDX 上使用 T4,那么我建议您创建一个 .ttinclude 文件并在每个 .tt 文件中引用它。这样,您将重用现有代码,并且当您更改它时,它将反映在所有生成的文件中。

    还有一个问题:全局是什么意思?全局用于您项目中的所有 EDMX 文件或您机器上的所有 EDMX 文件或项目团队中的所有 EDMX 文件或什么? 全局定义

    其他编辑

    由于您已将 global 定义为特定机器上的所有项目,这就是我要做的。

    首先:使用 T4 允许您调整 EDMX -> 每个项目的代码转换更改,或者更好地说是每个解决方案(特定解决方案中的所有项目)。在同一台机器上的其他项目/解决方案上,您应该包含相同的 T4 模板参考。所以在你的意义上它实际上并不是 global...

    您可以做的最好的事情是使用此 T4 模板创建自定义 Visual Studio 项模板,以便将此默认 T4 模板添加到您的解决方案/项目中容易得多。到 T4 为止,这就是全球性的。

    也许您应该阅读此 MSDN 条目,其中介绍了您的自定义类型:
    How to: Customize Object-Layer Code Generation (Entity Data Model Designer)

    【讨论】:

    • 这台机器上的所有 EDMX 文件。
    【解决方案2】:

    我什至不知道是否可以更改默认代码生成。

    我想您可以创建一个.tt,而不是尝试修改默认代码生成,它从ObjectContext 生成派生类。这样你就可以随意命名并实现默认构造函数了。

    类似:

    <#=Accessibility.ForType(container)#> partial class Entities : <#=code.Escape(container)#>
    {
        public Entities()
            : base("name=Default")
        { }
    }
    

    这种方法的缺点是您需要使用您创建的每个 EDMX 部署此 .tt 文件。


    但是,使用 Visual Studio 的插件架构,您可以考虑创建一个模板,该模板默认创建一个 EDMX 和这个 .tt 文件。作为添加普通“ADO.NET 实体数据模型”的替代品


    查看EntityModelCodeGenerator(默认代码生成策略运行的自定义工具),似乎注册了SingleFileGenerator扩展机制,这是一个COM组件。更多信息here

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多