16

如果我需要重新生成应该在哪里指定命名空间。我正在尝试使用 Models 命名空间中的部分类,但它们不匹配。

下面的简化代码片段是生成实体框架类的地方

namespace projectname
{
   #region Contexts

   /// <summary>
  /// No Metadata Documentation available.
  /// </summary>
  public partial class MyClass
  {

  }
}

当我在模型文件夹中添加一个类时,

namespace projectname.Models
{

    public partial class MyClass
    {
     //etc, etc 
    }
}

正如您所看到的,当我尝试使用命名空间时,命名空间不匹配会导致问题,因为编译器同时看到了 projectname.Models.MyClass 和 projectname.MyClass。

我想要一些关于解决此问题的正确方法的建议,最好是更新 EF 类,以便它们存在于 projectname.Models 命名空间中,但我不知道如何去做。

4

4 回答 4

12

根据 Roman O 的评论,可以通过更新文本转换 (.tt) 文件的“自定义工具命名空间”属性来更改命名空间,该属性将生成的实体类(在数据库优先方法中)与实体模型 (.edmx) 文件联系起来。这适用于带有 EF 5.0 的 VS 2012 Express。

我会发布截图,但由于缺乏声誉。

于 2014-03-16T01:40:06.260 回答
6

IIRC,如果您使用实体数据模型,您应该能够直接通过 xml 文件或文件更改命名空间(您可能必须为所有各种存储和概念模型更改它)。甚至可能有一些方法可以在设计器中进行更改.. 看起来很简单。

实际上,解决方案可能在这里:

生成的代码概述(实体数据模型设计器)(请参阅自定义工具命名空间)

于 2012-12-28T04:47:45.930 回答
3
  • 在解决方案资源管理器中右键单击项目中的 .edmx 文件,然后选择属性
  • 在 VS 属性窗格中,细化自定义工具命名空间
  • 输入您想要的完整 CLR 命名空间
  • 重建项目
于 2015-01-05T20:53:00.820 回答
1

自动生成的类的命名空间将继承自 VS 项目设置(如果您在那里更改它甚至会更改)。当然,您应该将“自定义工具命名空间”属性设为空。(刚刚用 VS2013 和 EF6.1 测试过)不像设置文件一直是 pita :)

对于旧版本,有一个关于手动更改的好视频:

https://youtu.be/B7Cqc9F0Ih8

于 2015-03-26T12:33:02.547 回答