我在使用 Visual Studio 2012 时遇到问题,尝试添加带有脚手架的 MVC4 控制器。理想情况下,我希望在与我的 Web 应用程序分开的程序集中使用添加新项 - ADO.NET 实体数据模型(即不是代码优先)从数据库生成实体框架模型(edmx 文件等)。但是,当我设置它并使用“添加控制器”,指定“具有读/写操作和视图的 MVC 控制器,使用实体框架”并从我的 DatabaseModel 程序集中选择模型类和数据上下文类时,会弹出以下警报消息。
“Ifl.Payforit4.DatabaseModel.Mno”不是指定的一部分
'Ifl.Payforit4.DatabaseModel.Payforit4Entities' 类,以及
'Ifl.Payforit4.DatabaseModel.Payforit4Entities' 类不能
修改为添加“DbSet”属性
它。 (例如,“Ifl.Payforit4.DatabaseModel.Payforit4Entities”
类可能位于已编译的程序集中。)
无法修改该类是有道理的,因为它位于另一个程序集中,尽管在同一解决方案中,并且是通过 T4 自动生成的,但查看 Payforit4Entities 的自动生成代码,“DbSet”属性已经很明显地存在了。
public DbSet<Mno> Mnoes { get; set; }
我还尝试过很多其他的事情。
- 将数据模型直接放入 Web 应用程序中
- 将模型类更改为数据库中的各种其他表,以防 Mno 类出现问题
- 将数据模型简化为一个简单的表
- 使用 Entity Framework Power Tools Beta 2 对 Code First 模型进行逆向工程。这产生了一组新的错误。我明白为什么它是测试版。
- 将 ADO.NET 数据模型代码生成策略从“无”更改为“默认”,以创建基于 ObjectContext 而不是 DbContext 的数据模型
- 关闭复数,因此属性名称为 Mno 而不是 Mnoes
他们都没有工作。唯一有效的方法是手动编写 Code First DbContext 派生类和 POCO。巧合的是,我发现的每个演示 MVC4 脚手架的示例都使用这种数据模型。有没有什么地方说 Code First 是唯一适用于 MVC4 脚手架的数据模型?有人设法在 Visual Studio 2012 中构建数据库优先 (.edmx) 数据模型吗?数据库足够复杂,我宁愿坚持数据库优先策略。
我可以看到,“代码优先”模型与“数据库优先”模型的脚手架必定存在一些差异。例如,前者具有 POCO 属性,保存由 KeyAttribute 指示的密钥,而后者则在 edmx 模型文件中保存该信息。这是 Entity Framework Power Tools 中逆向工程功能的基本原理吗?为了使用 MVC4 脚手架,我们是否期望从 edmx 文件转向逆向工程 Code First 模型?如果是这样,我们是否期望继续使用动态数据项目,直到实体框架电动工具完成?
技巧是首先编译您的解决方案,然后输入上下文类manually。不要从下拉列表中选择它,只需自己输入类名,它就会神奇地起作用;-)
看这里:ASP.NET MVC4 – 如何在 MVC 控制器中使用数据库优先 EF http://jefferytay.wordpress.com/2013/02/19/asp-net-mvc4-how-to-use-a-database-first-ef-in-a-mvc-controller/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)