0

我正在尝试使用 EF5(数据库优先方法,因为存在现有数据库)更新项目以在 ASP.NET MVC4 中工作。我正在使用 VS2010 执行此操作。

我正在按照此示例中的步骤进行操作。

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

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

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

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

我会很感激任何想法。

更新: 项目结构 这是显示项目结构、生成代码示例和编译器错误的屏幕截图。

奇怪的是,它似乎只根据结构为命名空间抛出错误,因此在图像Project.Models作为命名空间会产生问题,但如果我输入其他任何内容,例如ProjectModelsTest,错误就会消失。当然,我可以更改所有文件的命名空间,但是每次模型更改和更新时,命名空间都会被重置并返回错误。

这个问题似乎与我遇到的问题相同,但不幸的是,给出的唯一答案是建议检查参考资料;我相信我的很好,因为存在 System.Data.Entity 和 EntityFramework。

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

4

4 回答 4

1

看起来您的项目面向 .NET 2.0。右键单击您的项目并选择属性。确保目标框架设置为 .NET 4 或更高版本。

于 2013-08-05T23:36:04.200 回答
0

看起来好像名为System的表之一与 .NET System命名空间发生冲突。我想我只需要将表名更改为其他名称。

于 2013-08-06T14:42:51.367 回答
0

如果您不愿意更改数据架构,您可以配置实体框架以将表名映射到不同的类型/类。这样的事情可能会有所帮助。

于 2013-08-06T14:52:31.303 回答
0

Custom Tool Namespace我通过在 .edmx 模型属性中设置字段以及在其下的两个.tt文件的属性中使用“属性”窗口来为生成的类设置自定义命名空间。

于 2015-12-04T22:38:00.073 回答