LinQ 문에서 Entity Object를 만들고 싶지만 모든 열을로드하지 않으려합니다.Entity Framework - LinQ 프로젝션 문제
내 ORDERS 개체에 많은 열이 있지만 SQL 문과 결과가 더 작아 지도록 REFERENCE 및 OPERATION 열을 검색하려고합니다.
이 LINQ 문이 제대로 작동로드 내 모든 객체 속성 : 발생 된 오류가
var orders = (from order in context.ORDERS
select new ORDERS
{
REFERENCE = order.REFERENCE,
OPERATION = order.OPERATION
});
입니다
다음 문이 실패 그러나var orders = (from order in context.ORDERS
select order);
내 개체의 두 가지 속성을로드 :
The entity or complex type 'ModelContextName.ORDERS' cannot be constructed in a LINQ to Entities query.
무엇이 문제인가? 이 방법으로 객체를 부분적으로로드 할 수 있습니까?
미리 답변 해 주셔서 감사합니다.
답변
내가 가지고 지금은 답을 모두 사용하기 때문에 당신 Yakimych 딘 모두 감사해야하고 확인 :
var orders = (from order in context.ORDERS
select new
{
REFERENCE = order.REFERENCE,
OPERATION = order.OPERATION,
})
.AsEnumerable()
.Select(o =>
(ORDERS)new ORDERS
{
REFERENCE = o.REFERENCE,
OPERATION = o.OPERATION
}
).ToList().AsQueryable();
그리고 내가의를 원하는 것을 정확하게 얻을 SQL 문은 완벽하지는 않지만 필자가 필요로하는 2 개의 열 (그리고 모든 행 "1"을 포함하는 다른 열을 반환하지만 그 이유는 모르겠습니다.) - 이 메서드로 하위 개체를 만들려고했는데 잘 작동한다.
좋아, 이미이 방법을 시도했지만 어떻게이 익명 개체를 내 엔터티 형식으로 캐스팅 할 수 있습니까? – mbp
이것을 엔티티에 맵핑 할 수 없습니다.이것을 위해 사용자 지정 개체 (DTO)를 만들 수는 있지만 엔티티를 부분적으로로드 할 수는 없습니다. EF는 변경 및 안전을 시도 할 때 EF가이 작업을 처리하지 못하기 때문입니다. – Steven