Моя модель реализована в собственной DLL, где также находится сгенерированный App.config.Само приложение «не имеет» App.config.Контекст не был инициализирован (прямой доступ только в DLL).И я получаю сообщение об ошибке, которое было решено путем копирования строки подключения в новое приложение, созданное вручную App.config.
Этот случай был для меня немного излишним, и я решил получить EntityConnection, написав егосебя.Теперь проблемный код, который работает с избыточной версией, а не в собственной реализации.
public Discount GetDiscountByOffer(int discountId)
{
// Own implementation, redundant one without passed connection parameter
using (context2 = new SalesEntities(Configuration.EntityConnection))
{
return context2.Discounts.Single(d => d.ID == discountId);
}
}
В другом классе я вызываю этот метод и назначаю его клиенту.Также здесь я делаю новый контекст.Упрощенный код:
// Own implementation, redundant one without passed connection parameter
using (context1 = new SalesEntities(Configuration.EntityConnection))
{
var customer = GetCustomer(10004);
customer.ActualDiscount = GetDiscountByOffer(5); // here is the call and
// the error
}
Ошибка показывает, что ObjectContext (context1) был закрыт, чего я не понимаю.Как контекст2 связан с контекстом1?Могу поспорить, что оба имеют одну и ту же ссылку, но это не логично для меня.EntityConnection также инициализируется новым каждый раз, когда я передаю параметр.
В избыточной версии этот код работает.