存储库不初始化实体数据

时间:2016-11-22 16:55:05

标签: c# asp.net-mvc entity-framework repository repository-pattern

我想使用存储库模式创建包含实体框架数据的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错误,要么就不会显示数据的名称。

1 个答案:

答案 0 :(得分:1)

创建初始化数据上下文的构造函数:

public SubjectRepository()
{
     db = new irfwebpage20161013070934_dbEntities2();
}

public SubjectRepository(irfwebpage20161013070934_dbEntities2 dbContext)
{
     db = dbContext;
}

这允许您初始化存储库,不使用任何参数来初始化数据上下文或指定您自己的数据上下文。

您现在可以像这样使用:

var repo = new SubjectRepository();
SubjectContent subject = repo.Get(id);