我正在尝试使用EF5更新项目以在ASP.NET MVC4中工作(数据库优先方法,因为有一个现有的数据库)。我是用VS2010做的。
我正在执行此example中的步骤。
这些是我正在采取的步骤:
毕竟,它已经创建了EF要使用的类;问题是这些类都是用项目的根命名空间创建的,而不是我提供的命名空间。
如果我打开任何生成的类,我会得到一个错误列表,通过手动将命名空间更改为 ProjectModel 来修复错误
我很感激任何想法。
更新 这是一个屏幕截图,显示了项目结构,生成代码的示例以及编译器错误。
奇怪的是,它似乎只是基于结构为命名空间引发错误,所以在图像 Project.Models 中,因为命名空间会产生问题,但如果我键入其他内容例如 ProjectModels 或 Test 错误消失。我可以更改所有文件的命名空间,但每次模型更改并更新时,命名空间都将被重置并返回错误。
This问题似乎与我所拥有的问题相同,但不幸的是,给出的唯一答案建议检查参考文献;我相信我的很好,因为System.Data.Entity和EntityFramework存在。
更新2: 如果我在代码生成期间没有选择所有表,则不会出现名称空间问题。我目前正在以20个表格间隔更新模型,但有400个表格,我宁愿弄清楚实际问题是什么。我假设它是由于一个或多个表的结构或名称,但我不确定是否有关于表结构或关于EF的命名的特定规则。
答案 0 :(得分:1)
看起来您的项目针对的是.NET 2.0。右键单击您的项目,然后选择“属性”。确保将目标框架设置为.NET 4或更高版本。
答案 1 :(得分:0)
似乎其中一个名为 System 的表与.NET System 名称空间冲突。我想我只需要将表名更改为其他名称。
答案 2 :(得分:0)
如果您不希望更改数据模式,则可以配置实体框架以将表名映射到不同的类型/类。像this这样的东西可能会有所帮助。
答案 3 :(得分:0)
我实现了为生成的类设置自定义命名空间,方法是在.edmx模型属性中设置Custom Tool Namespace
字段,并在其下的.tt
文件的属性中使用属性设置窗口。