Я довольно новичок в EF ... в настоящее время я занимаюсь разработкой веб-сайта на asp.net с EF, и иногда я получаю исключения о подключении.
Я читал эту статью http://cgeers.com/2009/02/21/entity-framework-objectcontext/ В соответствии с этим я запрограммировал:
public static class ObjectContextPerHttpRequest
{
public static tradeEntities Context
{
get
{
string objectContextKey = HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(objectContextKey))
{
HttpContext.Current.Items.Add(objectContextKey, new tradeEntities());
}
return HttpContext.Current.Items[objectContextKey] as tradeEntities;
}
}
}
и затем я использую myEntities et = p.ObjectContextPerHttpRequest.Context;
Что где-то на моем веб-сайте мне нужно получить продукты ... Для этого я использую это:
public List<tProducts> returnProductsFromSubcategory(int subcategoryID)
{
var prod = from p in et.tProducts
from c in et.tCompany
where (c.companyID == p.fk_companyID && c.enable == true)
where (p.subCategoryID == subcategoryID && p.enable == true)
select p;
//et.Connection.Close();
return prod.ToList(); //Here comes an Exception The connection's current state is broken.
}
Иногда это работает нормально, но иногда я получаю исключение.
System.InvalidOperationExceptionExecution для команды требуется
открытое и доступное соединение. Текущее состояние соединения
сломаны.
Я не уверен, что не так. Я прочитал, что я должен реализовать функцию dispose, но где ее добавить и как я могу это сделать?
Заранее большое спасибо за помощь.
Martin