我对 Linq to Entities 有一个奇怪的问题,有时会生成带有重复的图形。使用包含的查询,在请求的图的基础上有一个简单的限制,不会生成重复项。
当同一查询与图表中其他地方的另一个限制一起使用时,我有重复项。
考虑下图:
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 问题。
这是在将图表发送回服务器以保持更改时发出的,如本博文中所述。
我希望有人遇到同样的问题并找到了解决方案。TIA。