EF 5.x DbContext Generator - 命名空间问题

时间:2013-08-05 19:10:07

标签: c# asp.net-mvc entity-framework

我正在尝试使用EF5更新项目以在ASP.NET MVC4中工作(数据库优先方法,因为有一个现有的数据库)。我是用VS2010做的。

我正在执行此example中的步骤。

这些是我正在采取的步骤:

  • 设置一个名为 Project.NET
  • 的新MVC4项目
  • 将实体数据模型创建为 ProjectModel.edmx
  • 连接字符串保存为 ProjectEntities
  • 模型命名空间设置为 ProjectModel
  • 添加名为 ProjectModel.tt 的EF 5.x DbContext Generator项目

毕竟,它已经创建了EF要使用的类;问题是这些类都是用项目的根命名空间创建的,而不是我提供的命名空间。

如果我打开任何生成的类,我会得到一个错误列表,通过手动将命名空间更改为 ProjectModel 来修复错误

我很感激任何想法。

更新 Project Structure 这是一个屏幕截图,显示了项目结构,生成代码的示例以及编译器错误。

奇怪的是,它似乎只是基于结构为命名空间引发错误,所以在图像 Project.Models 中,因为命名空间会产生问题,但如果我键入其他内容例如 ProjectModels Test 错误消失。我可以更改所有文件的命名空间,但每次模型更改并更新时,命名空间都将被重置并返回错误。

This问题似乎与我所拥有的问题相同,但不幸的是,给出的唯一答案建议检查参考文献;我相信我的很好,因为System.Data.Entity和EntityFramework存在。

更新2: 如果我在代码生成期间没有选择所有表,则不会出现名称空间问题。我目前正在以20个表格间隔更新模型,但有400个表格,我宁愿弄清楚实际问题是什么。我假设它是由于一个或多个表的结构或名称,但我不确定是否有关于表结构或关于EF的命名的特定规则。

4 个答案:

答案 0 :(得分:1)

看起来您的项目针对的是.NET 2.0。右键单击您的项目,然后选择“属性”。确保将目标框架设置为.NET 4或更高版本。

答案 1 :(得分:0)

似乎其中一个名为 System 的表与.NET System 名称空间冲突。我想我只需要将表名更改为其他名称。

答案 2 :(得分:0)

如果您不希望更改数据模式,则可以配置实体框架以将表名映射到不同的类型/类。像this这样的东西可能会有所帮助。

答案 3 :(得分:0)

我实现了为生成的类设置自定义命名空间,方法是在.edmx模型属性中设置Custom Tool Namespace字段,并在其下的.tt文件的属性中使用属性设置窗口。