그래서 인터넷에서는 쿼리를 실제로 가져와야하는 개체 (예 : 튜플) 묶음을 반환하는 Linq to Entities 쿼리를 만들기 위해 클라이언트 및 서버 단계 (Linq to Entities 및 Linq to Objects)로 나눌 수 있습니다. 더 많은 코드를 유지 보수하는 것에 관한 것. 예를 들어, Linq to Entities 매개 변수가없는 생성자 요구 사항은 게으른 쿼리에 대한 잠재 성을 파생합니다
(
from table
select Tuple.Create(a, b)
);
불법이며, 실제로 곧 우리가 위대한 잠재력을 죽이고, ToList()는 쿼리가 열거 완벽하게 실행하고 부르는, 그러나
(
from table
select new {A=a, B=b}
).ToList().Select(row => Tuple.Create(row.A, row.B));
로 작성해야합니다 게으른 로딩. 나는 당신이 settable 속성들을 가진 클래스들로이를 우회 할 수 있다는 것을 알았지 만, 중복되어서는 안되는 시스템 클래스들, 또는 생성자에서 복잡한 로직을 가진 커스텀 클래스는 어떨까? 어떤 간단한이 제한을 피할 수있는 방법, 그래서 개체의 생성은 IQueryable 컬렉션이 열거되었을 때 수행하기 위해 대기열 수 있습니다?
내가하려고하는 것이 "열악한"디자인이라는 것을 알려주지 만, 적어도 이것이 가능한지 알고 있으면 좋을 것입니다. 미리 감사드립니다!
첫 번째 예제와 같은 쿼리를 작성할 때 다음 런타임 예외가 발생합니다. "매개 변수없는 생성자 및 이니셜 라이저 만 LINQ에 지원됩니다." – ztforster
불량합니다. 나는 예제 1이 유효하다고 생각했다. 좋아,하지만 나는 예제 2를 알고있다. –
호기심에서 벗어나서 어떤 버전의 엔티티를 사용하고 있습니까? –