我想使用存储库模式创建包含实体框架数据的Details视图。
这是我的界面存储库:
public interface InterfaceRepositroy: IDisposable
{
IEnumerable<SubjectContent> GetAll();
SubjectContent Get(string id);
}
这是toher存储库:
public class SubjectRepository : InterfaceRepositroy,IDisposable
{
private irfwebpage20161013070934_dbEntities2 db;
public IEnumerable<SubjectContent> GetAll()
{
return db.Set<SubjectContent>().ToList();
}
public SubjectContent Get(string id)
{
return db.Set<SubjectContent>().Find(id);
}
public void Dispose()
{
throw new NotImplementedException();
}
}
这是我的控制器:
private InterfaceRepositroy subjectreposi;
public ActionResult Details(string id)
{
SubjectContent subject = subjectreposi.Get(id);
return View(subject);
}
我的视图是标准的详细信息模板。
控制器此时出现错误:
SubjectContent subject = subjectreposi.Get(id);
我真的很感激帮助。这就像我试图实现的存储库模式的第四个版本,但到目前为止它们都没有工作。我已经尝试过没有接口,使用subjecrepository的实例或者在存储库中使用不同的linq to sql。它要么得到http错误,要么就不会显示数据的名称。
答案 0 :(得分:1)
创建初始化数据上下文的构造函数:
public SubjectRepository()
{
db = new irfwebpage20161013070934_dbEntities2();
}
public SubjectRepository(irfwebpage20161013070934_dbEntities2 dbContext)
{
db = dbContext;
}
这允许您初始化存储库,不使用任何参数来初始化数据上下文或指定您自己的数据上下文。
您现在可以像这样使用:
var repo = new SubjectRepository();
SubjectContent subject = repo.Get(id);