Sim*_*onB 42 c# entity-framework visual-studio
我无法在Visual Studio 2013(更新3和4)中搭建控制器(带有视图的MVC5控制器,使用实体框架).错误消息如下:
运行所选代码生成器时出错:
A configuration for type 'Library.Morthwind.Models.Catgeory' has already been added. To reference the existing configuration use the Entity<T>() or ComplexType<T>() methods
Run Code Online (Sandbox Code Playgroud)
我通过从"Entity Framework Power Tools Beta 4"工具菜单中选择"逆向工程师代码优先"来创建模型.
关于什么可能导致此错误的任何想法?
小智 40
我今天遇到了同样的问题.
我为我的一个Model类添加了一些自定义配置,以使用Fluent API添加关系.这是在我的dbContext类中OnModelCreating使用以下内容在覆盖中指定的:
modelBuilder.Configurations.Add(new OrderConfiguration());
Run Code Online (Sandbox Code Playgroud)
注释掉上面这一行允许Controller脚手架按预期运行.
VS 2013更新2遇到了问题,脚手架出现了一个无用的错误,没有进一步的信息.在已安装的Update 3中,它提供了足够的详细信息来跟踪底层问题.
杰夫.
小智 19
我也遇到过这个问题.杰夫的解决方案在某些情况下有效.但随着我的DbContext越来越多,需要映射密钥的模型越来越多,我无法删除Configurations.Add()方法,因为我会收到EF无法找到主键的错误等等......
我发现通过更改我的DBContext派生类来使用IDbSet属性而不是DbSet我可以生成控制器和视图就好了.但是,对我来说这引入了另一个问题,IDbSet不支持异步方法.
看来我可以生成具有适当配置的非异步控制器,也可以生成没有配置类的异步方法.
如果您的上下文属性是DbSet类型,请尝试将它们更改为IDbSet.如果您没有生成异步控制器方法,这可能对您有用.