Это то, что у меня было сегодня, странное.
У меня есть этот запрос в методе сборки.
public Order[] SelectAllOrders()
{
Order[] orders;
using (MyDataContext context = new MyDataContext())
{
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(order => order.OrderDetails);
context.LoadOptions = dlo;
orders = context.Orders.Select(p => p).ToArray();
}
return orders;
}
Предположим, я уже вызвал ToArray (), которую выполнила команда SQL, и дал мне нужные мне объекты, и я передал их новому массиву Order [], для которого не нужен экземпляр DataContext.
Во время сериализации Order [], который я получаю из метода return, сериализатор снова пытается получить доступ к DataContext, и я получаю исключение, которое не может получить доступ к удаленному объекту.
Пробовал без оператора using () и работает как надо. Но почему я так поступаю?
Кто-нибудь может объяснить, почему отложенная загрузка все еще остается, пока я вызываю .ToArray () и назначаю новую переменную с содержимым?