2

我想使用存储库模式创建一个具有实体框架数据的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

你需要初始化你的数据上下文,这在构造 –

+0

我会留从存储库模式远通常完成。 –

+0

你会推荐什么,因为它仍然不起作用?我只是想在细节视图中的多个实体数据表 –

回答

1

创建初始化数据方面的构造函数:

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

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

这可以让你要么不带参数,这将初始化你的数据上下文或指定自己的数据上下文初始化存储库。

现在你可以使用这个像这样:

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