我已经定义了一个接口:无法创建EF生成的DbContext类控制器
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... }
}
一切编译所有罚款和花花公子,但是当我尝试创建一个控制器和使用CMDB_ModelConatiner作为上下文类(创建一个强类型的控制器)我得到的错误
有错误发生“CMDB.Domain.Models.CMDB_DataModelContainer”。尝试重建您的项目。
我删除了部分类,并能够创建控制器。任何想法为什么会发生?
要添加,DBContext类位于单独的项目中。
它是在一个单独的项目并不重要。我在同一个项目中创建了一个包含DBcontext类和MVC3应用程序的测试项目,但仍然不成功。
我想问一个问题,如果有人在使用Model第一种方法时实际设置了存储库。我发现自己遇到问题后,尝试应用这种模式时,首先使用模型。
如果您想重新创建问题,请创建一个MVC 3(或4,我使用了3)。这是我为自己重新创建测试所做的。
添加一个新的ADO.Net实体数据模型。
- 创建两个实体:塔克和灌装
- “名称”标属性添加到每个。
- 添加关联m < ---> m
- 在models文件夹中创建一个名为“Partial”的新文件夹。
- 添加一个新类 - 该类应该与Context类相同(如果您保留默认名称,它应该是Model1Container)并且位于相同的命名空间中。
例如
public partial class Model1Container
{
}
- 添加一个新的控制器“TacoController”为强类型对,你猜对了,塔可,并使用Model1Container作为上下文类。 Voila转载。是的,我喜欢炸玉米饼。
什么*文件名*包含你的'CMDB_DataModelContainer:ICMDBContext'? – 2012-07-11 17:09:47
CMDB_Model.cs。我不相信C#中的文件名与Java中的文件名相关。我试着将文件重命名为DBContext生成的文件。仍然没有去。 – Erik 2012-07-11 17:58:27
你在哪里实现了你的DbSet属性访问器? (DbSet的实际代码为 {get ...})你也可能想在这里使用IDbSet(可能没有什么区别,但它是抽象的,而不是你指的具体实现) –
2012-07-11 19:19:26