我已經看到了在構造函數中注入datacontext的EF7人員的例子。應該使用實體框架DbContext通過DI實現IDisposable?
但是,由於DbContext實現了IDisposable,我擔心我的存儲庫也必須實現IDisposable,通過代碼傳播。
我見過的例子沒有實現IDisposable,但我不知道爲什麼。
編輯
爲了澄清 以前我是用分貝範圍內以通常的方式
using(var db = new SomeContext())
{
return await from row in db.Table
select row).ToListAsync();
}
看做事的注射方式的DbContext將被傳遞到存儲庫構造函數,但是一旦Repository完成,這個存儲庫是否必須實現IDisposable來處置DbContext?
如果Repository隨後會調用另一個更改其注入的DbContext的存儲庫類,那麼這個DBContext是否存在風險?
即
public SomeOtherRepository (SomeContext db)
{
this.db = db;
}
*
public SomeRepository (SomeOtherRepository repo, SomeContext db)
{
this.repo = repo;
this.db = db;
}
public async TaskAdd(Row row)
{
db.Some.Add(row);
await db.SaveChangesAsync();
repo.AddSomethingElse(row.Id);
}
我想DI處理對象的生命週期是由DI容器本身處理的。在某些情況下,單件對象根本不配置 –