У меня есть служба WCF, которая вызывает следующий метод в одном из моих объектов репозитория для создания нового объекта продажи в базе данных
public static Sale New(Sale sale)
{
using (var ctx = new DBcontext())
{
ctx.Sales.AddObject(sale);
ctx.SaveChanges();
return sale;
}
}
Метод WCF, вызывающий это, выглядит следующим образом
public Sale SaleNew(Sale sale)
{
return SaleRepository.New(sale);
}
Когда я вызываю это из клиентского приложения, я получаю следующую ошибку
"Базовое соединение было закрыто: соединение было неожиданно закрыто."
ЕслиЯ перебираю весь код, кажется, работает нормально, и запись попадает в базу данных.Если я добавлю следующую строку в мой метод репозитория после SaveChanges, он будет работать нормально
ctx.Detach(sale);
Исключение происходит, потому что я удаляю контекст, как только метод возвращается?Является ли использование контекста сущности таким образом плохой практикой, т. Е. Избавляется от него сразу?Я делаю это только потому, что его SOA и практически без сохранения состояния, поэтому все мои методы репозитория создают контекст, возвращают значение и удаляют контекст.Все, что передается, будет добавлено в контекст или повторно присоединено.