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