1
我有一個簡單MagazineRepository類處置EF上下文控制器
public class MagazineRepository : IDisposable
{
//EntityFramewokr context
private DataBaseContext _context;
public MagazineRepository()
{
_context = new DataBaseContext();
}
public void Dispose()
{
if (_context != null)
{
_context.Dispose();
}
GC.SuppressFinalize(this);
}
}
和一個簡單的控制器更好的辦法每個Action中的「ToList()」?如果我將在控制器的析構函數中調用Dispose()上下文方法,該怎麼辦?這樣的事情:
public class MagazineController : Controller
{
MagazineRepository _magazineRepository;
public MagazineController()
{
_magazineRepository= new MagazineRepository();
}
~MagazineRepository();
{
if(_magazineRepository!=null)
{
_magazineRepository.Dispose();
}
}
public ActionResult Index()
{
var magazine = magazineRepository.GetAll();
return View(magazine);
}
}
這段代碼的作品,但我認爲它應該寫在其他方式。在上一個代碼示例中,上下文能夠活得太久。 那麼有沒有任何模式,可以給我我的db記錄每次沒有「使用」和「ToList()」?
您能否詳細說明下面這行:那麼是否有任何模式可以在不使用「使用」和「ToList()」的情況下爲我提供db數據記錄?據我瞭解你的問題,使用(){...}將服務於你。爲什麼你明確地處理對象。您正在編寫託管代碼,因此GarbegCollector將爲您處理此任務。 – 2012-09-19 13:26:01
在最終的應用程序中,我將在每個應用程序中使用10次操作和幾次庫存方法調用。所以我將不得不爲每個人寫「使用」。所以我想知道我是否可以避免它。在析構函數中處理()實體框架上下文是否可行? – Rhot