2
我正在尝试应用this blog中所述的工作模式单元,但遇到了以下问题:如果仅将相关的DbSet注入回购,例如,仅使用DbSet更新对象
public ArticleRepository(DbSet<Article> articles)
{
this.articles = articles;
}
那么我该如何更新记录或将其状态设置为已修改?
之前我用
public void Update(Article article)
{
this.context.Entry(article).State = EntityState.Modified;
}
但随着新的方法,我没有访问的DbContext了。 DbSet.Add和DbSet.Attach都不能在这里工作,所以我如何更新上下文中的对象?
'IGenericRepository'应完全由您的设计。您可以添加一些方法来为其中的实体设置状态。这种界面真的看起来像一个包装。所以如果可能的话,尝试通过其他一些隐藏的界面暴露核心部分(DbContext,...)。在需要时,您可以随时访问核心以执行一些***高级***任务。作为包装,有时它不能像核心部件那样提供完整的操作。对我而言,这种模式很大程度上取决于所谓的***包装***。 – Hopeless
1.您可以从'DbSet'访问上下文。 2.不要注入'DbSet',注入上下文本身,然后使用上下文设置'this.articles'。 3.你知道你为什么抽象了背景吗?实体框架上下文已经具有内置的工作单元机制。 – haim770