Visual Studio 2012中数据库优先实体框架模型的MVC4脚手架

Chr*_*ley 11 asp.net-mvc entity-framework scaffolding visual-studio-2012

我遇到了Visual Studio 2012的问题,试图添加一个带脚手架的MVC4控制器.理想情况下,我希望在我的Web应用程序的单独程序集中使用添加新项 - ADO.NET实体数据模型(即非代码优先)从数据库生成实体框架模型(edmx文件等).但是,当我设置它并使用Add Controller,指定"具有读/写操作和视图的MVC控制器,使用Entity Framework"并从DatabaseModel程序集中选择Model类和Data上下文类时,会弹出以下警告消息.

'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; }
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他的东西.

  1. 将数据模型直接放在Web应用程序中
  2. 如果Mno类出现问题,请将模型类更改为数据库中的各种其他表
  3. 将数据模型简化为一个简单的表
  4. 使用Entity Framework Power Tools Beta 2对Code First模型进行反向工程.这会产生一组新的错误.我明白为什么它是测试版.
  5. 将ADO.NET数据模型代码生成策略从None更改为Default以基于ObjectContext而不是DbContext创建数据模型
  6. 关闭复数,使属性名称为Mno而不是Mnoes

他们都没有工作.唯一有效的方法是手工编写Code First DbContext派生类和POCO.巧合的是,我发现的每个例子都演示了MVC4脚手架使用这种数据模型.有没有什么东西说Code First是唯一一种适用于MVC4脚手架的数据模型?有没有人设法在Visual Studio 2012中构建数据库优先(.edmx)数据模型?数据库非常复杂,我宁愿坚持使用数据库优先策略.

我可以看到Code First与Database First模型的脚手架必然存在一些差异.例如,前者具有保存由KeyAttribute指示的密钥的POCO属性,而后者在edmx模型文件中保存该信息.这是Entity Framework Power Tools中逆向工程功能的基本原理吗?我们是否希望从edmx文件转向反向设计的Code First模型以便使用MVC4脚手架?如果是这样,我们是否期望在实体框架电动工具完成之前继续使用动态数据项目?

Mar*_*cus 13

诀窍是首先编译您的解决方案,然后手动输入上下文类.不要从下拉列表中选择它,只需自己输入类名,它就会神奇地工作;-)

请参阅此处:ASP.NET MVC4-如何在MVC控制器中使用Database First EF