오늘 제가 가지고있는 것은 이상한 것입니다.LINQ 2 SQL Query ObjectDisposed 예외
어셈블리 메서드에서이 쿼리가 있습니다.
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;
}
는 SQL 명령을 실행하고 나에게 내가 필요로하는 개체를했다) 내가 이미 ToArray를 (전화 세웠 죠 그리고 난이 DataContext를 인스턴스를 필요가 없습니다 새로운 주문 [] 배열로 제공합니다. 메신저를 직렬화하는 동안 메서드 반환에서 얻을 serializer DataContext 다시 액세스하려고 및 배치 된 개체에 액세스 할 수없는 예외가 발생합니다.
using() 문을 사용하지 않고 사용하려고 시도한 것과 같이 작동해야합니다. 하지만, 왜 이런 행동을합니까? .ToArray()를 호출하고 내용에 새 변수를 할당하는 동안 지연로드가 여전히 남아있는 이유는 누구나 설명을 줄 수 있습니까?
Marc, 고맙습니다. 콘솔 프로젝트 테스트를 피하기 위해 SQL 쿼리를 출력 창에 표시하는 방법을 기억하지 못했습니다. 아직 찾지 못했습니다. P. 그래서 콘솔을 만들었고 당신 말이 맞았고 바보였습니다. OrderDetails 1 - * Product. 답은 LoadWith (od => od.Product)와 모두 좋습니다. 고맙습니다.... –