【问题标题】:Entity Framework 4 Code Generation Item Ignoring Custom Tool Namespace实体框架 4 代码生成项忽略自定义工具命名空间
【发布时间】:2013-04-23 05:32:58
【问题描述】:

我有一个使用模型优先实体框架 edmx 文件的项目。我已经设置了自定义工具命名空间,以便实体最终位于我希望它们进入的命名空间中。这已经有一段时间了。

我现在需要自定义生成的代码,为此我添加了一个代码生成项,但是默认生成的代码忽略了自定义工具命名空间。

除了可以编辑tt文件之外,代码生成项还有什么不同?另外,关于如何更正默认代码生成项以使其尊重自定义工具命名空间的任何想法?

【问题讨论】:

  • VS2010有补丁解决自定义工具中的命名空间被忽略,创建.edmx文件时使用项目默认命名空间的问题吗?
  • 这是我通常寻找 VS2010 补丁的地方:connect.microsoft.com/VisualStudio/Downloads

标签: .net entity-framework-4


【解决方案1】:

如果您检查 TT 模板文件,您将看到一个指定自定义工具命名空间的属性(在属性窗口中)。在此处设置您的命名空间,模板应在其代码生成中使用它,注意这是在 TT 文件上,您需要对用于 EDMX 生成的所有 TT 文件执行此操作。它不使用 EDMX 文件中指定的那个。

修复可能会纠正这种行为,但不要害怕潜入 TT。我有一篇文章详细说明了您可能想要进行的一些更改。

http://slappyza.wordpress.com/2010/08/08/getting-the-entity-framework-to-generate-an-interface-for-mocking/

我还发现了 VB 版本的一些其他问题。不确定它们是否已修复。

http://slappyza.wordpress.com/2010/08/03/bug-in-the-ado-net-entity-framework-poco-generator/

【讨论】:

  • 谢谢!如果您要重复实体名称,请记住在单独的文件夹中创建每个 .edmx 以避免文件冲突(Customer.vb 等)。
【解决方案2】:

最简单的解决方案是编辑.tt 文件。

你需要找到

string namespaceName = code.VsNamespaceSuggestion();

然后你可以用你的自定义命名空间替换它:

string namespaceName = "YourCustomNamespace";

【讨论】:

    【解决方案3】:

    更改项目的默认命名空间并重建您的项目。

    【讨论】:

    • 为什么投反对票?当我遇到这个问题时,这是唯一对我有用的解决方案......
    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2015-09-13
    • 2012-04-15
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多