我們有一個帶有實體框架4.0的Web應用程序。不幸的是,當大量用戶的命中應用程序的EF引發錯誤 基礎提供失敗的開放實體框架4.0 - 底層提供商開放失敗
下面的代碼片段:
//DAL
public IQueryable<EmployeeEntity> GetEmployeeDetail()
{
DatabaseEntities ent = new DatabaseEntities(this._connectionString);
IQueryable<EmployeeEntity> result = from employee in ent.EmployeeEntity
select employee;
return result;
}
請注意上面的代碼返回IQuerable。
- 上面的模式可能會導致異常發生?
- 實體框架何時以及如何確定關閉/打開數據庫連接以及保留多久?
- 上述錯誤發生在哪種情況下?
- EF連接池的最大數量是多少,我們如何配置?
- 我們是否需要明確指定打開和關閉
- 下面的代碼是解決上述問題的最佳方法嗎?
public IQueryable<EmployeeEntity> GetEmployeeDetail()
{
using (DatabaseEntities ent = new DatabaseEntities(this._connectionString))
{
IQueryable<EmployeeEntity> result = from employee in ent.EmployeeEntity
select employee;
return result.ToList().AsQuerable();
}
}
是否有特定原因返回'IQueryable'而不是'IEnumerable '? –
RePierre
@RePierre,謝謝你的回覆。 IT的現有代碼,無法更新。無論如何,有什麼區別? –
區別在這裏http://stackoverflow.com/a/2876655/844006。我在問,因爲我認爲如果將實體容器封裝在'using'語句中並將結果顯示爲'IQueryable',那麼您將遇到一些問題;某人稍後可能會執行某些操作,例如GetEmployeeDetail(),其中(e => e.Id == id)',並且執行該查詢可能會有一些問題,因爲數據上下文對象將被丟棄。 –
RePierre