.All()
쿼리 은 하위 엔터티가없는 기본 엔터티를으로 반환합니다. 예를 들어, 두 개의 고객 만있는 데이터베이스를 상상해보십시오. 주문은 BuyerName 열이있는 하위 엔터티입니다. 하나의 고객 레코드에는 두 명의 다른 구매자로부터 두 차례의 주문이 있고 다른 고객에게는 주문이 없습니다.WCF Data Services 클라이언트의 하위 엔터티에 .All()을 호출하면 하위 엔터티가없는 경우 기본 엔터티를 반환하는 이유는 무엇입니까?
다음 쿼리는 두 명의 다른 구매자 (예상 한 것과 같음)이기 때문에 두 개의 주문이있는 고객을 반환하지 않지만 주문이없는 고객은 반환합니다. 추가 .Any()
쿼리를 추가함으로써
query.Where(c => c.Orders.All(
o => o.BuyerName == buyer.Name));
, 나는 내가 .All()
쿼리가 자동으로 나를 위해했을 것이라고 생각했을 것이다 것을 얻을.
query.Where(c => c.Orders.All(
o => o.BuyerName == buyer.Name)
&& c.Orders.Any());
이것은 최소한의 놀라움의 원칙을 위반하는 것으로 보입니다. .All()
을 호출하면 하위 엔티티가 없을 때 기본 엔티티가 반환되지 않아야한다고 생각합니다. 따라서 하위 엔터티가없는 경우 WCF Data Services 클라이언트 내의 .All()
이 기본 엔터티를 반환하는 이유는 무엇입니까?
대단한 답변을 보내 주셔서 감사합니다. –