때로는 중복이있는 그래프를 생성하는 엔티티에 Linq에 이상한 문제가 있습니다. 요청한 그래프의 기본에 간단한 제한 사항이있는 include를 사용하는 쿼리는 중복을 생성하지 않습니다.STE와 함께 사용되는 엔티티에 중복이있는 그래프를 생성
그래프의 다른 곳에서 다른 쿼리와 동일한 쿼리를 사용하면 중복이 생깁니다. 지금이 쿼리
Entity1
Entity2
Entity3
Entity4
Entity5
Entity6
Entity7
Entity8
:
var query = context.Entity1.Where(u => (u.StringProp.StartsWith(someValue)));
query = query.Include(@"NavpropEntity2.NavPropEntity3.NavPropEntity4.NavPropEntity5.NavEntity6");
query = query.Include(@"NavpropEntity2.NavPropEntity3.NavPropEntity7");
query = query.Include(@"NavpropEntity2.NavPropEntity3.NavPropEntity8");
그래프에서 entity6에 대한 중복을 생성하지 않습니다
는 다음과 같은 그래프를 생각해 보자.
하지만 다음 쿼리는!
query = context.Entity1.Join(context.Entity3, u => u.Entity2.Entity3.Entity4Id, g => g.Id, (u, g) => new NotSoAnonymousTypeWithParameterLessConstructor { Entity4= g, Entity1 = u })
.Where(
ApplyNotSoAnonymousTypeRestrictions(
StringProp,
Id)
).Select(z => z.Entity1);
query = query.Include(@"Navprop1.NavProp2.NavProp3.NavProp4.NavProp5");
query = query.Include(@"Navprop1.NavProp2.NavProp3.NavProp6");
query = query.Include(@"Navprop1.NavProp2.NavProp3.NavProp7");
은 Entity6에 대해 중복을 생성합니다.
엔티티 그래프에는 linq 쿼리 끝에 문제가 있음을 유의하십시오. EF/STE 문제이므로 STE 문제는 아닙니다.
이것은 blog post에 설명 된대로 변경 사항을 유지하기 위해 그래프를 서버로 다시 보낼 때 발행됩니다.
같은 문제가 발생하여 해결 방법을 찾았 으면합니다. TIA.