我有一个接口定义为:
public interface ICMDBContext
{
DBSet<Building> {get;}
DBSet<Room> {get;}
more DBSet methods...
string Save()
}
我有名为 CMDB_DataModelContainer 的 DBContext 生成类。
我有一个部分类 CMDB_DataModelContainer 它实现了 ICMDBContext 看起来像这样(是的,两者都在同一个命名空间中):
public partial class CMDB_DataModelContainer : ICMDBContext
{
string Save() { implemenation... }
}
一切都编译得很好而且花花公子,但是当我尝试创建一个控制器并使用 CMDB_ModelConatiner 作为上下文类(创建一个强类型控制器)时,我得到了错误
生成“CMDB.Domain.Models.CMDB_DataModelContainer”时出错。尝试重建您的项目。
我删除了部分类并能够创建控制器。任何想法为什么会发生这种情况?
此外,DBContext 类位于一个单独的项目中。
它在一个单独的项目中的事实并不重要。我在同一个项目中创建了一个带有 DBcontext 类和 MVC3 应用程序的测试项目,但仍然不行。
我想要问的一个问题是,是否有人在使用模型优先方法时实际设置了存储库。我发现自己在首次使用模型时尝试应用此模式后遇到问题。
如果您想重新创建问题,只需制作 MVC 3(或 4,我使用 3)。这就是我为自己重新创建它的测试所做的。
添加一个新的 ADO.Net 实体数据模型。
- 创建两个实体:Taco 和 Filling
- 为每个添加一个“名称”标量属性。
- 添加关联 m <---> m
- 在模型文件夹中创建一个名为“Partial”的新文件夹。
- 添加一个新类 - 该类的名称应与 Context 类相同(如果您保留默认名称,则它应为 Model1Container)并位于同一命名空间中。
例如
public partial class Model1Container
{
}
- 添加一个新的控制器“TacoController”作为强类型,你猜对了,Taco,并使用 Model1Container 作为上下文类。瞧,转载。是的,我喜欢炸玉米饼。