我的界面定义为:
public interface ICMDBContext
{
DBSet<Building> {get;}
DBSet<Room> {get;}
more DBSet methods...
string Save()
}
我有DBContext生成的类,名为CMDB_DataModelContainer。
我有一个部分类CMDB_DataModelContainer,它实现了ICMDBContext,看起来像这样(是的,两者都在同一名称空间中):
public partial class CMDB_DataModelContainer : ICMDBContext
{
string Save() { implemenation... }
}
Everything编译所有精细和花花公子,但当我尝试创建一个控制器并使用CMDB_ModelConatiner作为上下文类(创建一个强类型控制器)时,我得到错误
生成'CMDB.Domain.Models.CMDB_DataModelContainer'时出错。尝试重建项目。
我删除了部分类,并且能够创建控制器。有什么想法会发生这种情况吗?
要添加,DBContext类位于单独的项目中。
它在一个单独的项目中无关紧要。我在同一个项目中创建了一个带有DBcontext类和MVC3应用程序的测试项目,但仍然没有。
我想问一个问题是,在使用模型第一种方法时是否有人实际设置了存储库。在第一次使用模型时尝试应用此模式的问题后,我发现自己遇到了问题。
如果你想重新创建问题,只需制作一个MVC 3(或4,我使用3)。这就是我自己为重新创建它所做的测试。
添加新的ADO.Net实体数据模型。
e.g。
public partial class Model1Container
{
}
- 添加一个新的控制器“TacoController”作为强类型,你猜对了,Taco,并使用Model1Container作为上下文类。沃伊拉,转载。是的,我喜欢炸玉米饼。
答案 0 :(得分:0)
您可能已经发现,删除(/重命名)分部类,创建控制器然后恢复分部类似乎是一个充分的解决方法。至于原因:
我试过的一次我注意到一些奇怪的事情:我创建的部分类文件中出现了一个新的声明:
public DbSet<Taco> Taco { get; set; }
我只能推测VS被部分类文件搞糊涂了 - 它找到你创建的部分类文件,没有看到声明的DBSet,尝试添加它然后进入tizzy因为太多炸玉米饼
克里斯