Dyl*_*ter 4 c# .net-4.0 include ef-code-first
我正在使用Entity Framework 4.1 Code First,我也在使用PredicateBuilder,这样我就可以跨多个Specification类构建谓词表达式(使用Specification模式).我能够正确地构建谓词并将其应用于DbSet,我得到的数据就是我所期望的.但是,无论我尝试什么,它总是延迟加载.这是我如何构建谓词并应用它的一个简单示例.
IQueryable<HairColor> hairColorQuery = Context.Set<HairColor>().AsExpandable();
Expression<Func<Parent, bool>> parentPredicate = PredicateBuilder.And(PredicateBuilder.True<Parent>(), p => p.NameLast.StartsWith("V")).Expand();
Expression<Func<HairColor, bool>> hairColorPredicate = PredicateBuilder.And(PredicateBuilder.True<HairColor>(), h => h.Parents.AsQueryable().Any(parentPredicate));
HairColor[] hairColors = hairColorQuery.Where(hairColorPredicate).Include(h => h.Parents).ToArray();
Run Code Online (Sandbox Code Playgroud)
就像我上面说的那样,我得到了我想要的数据,但它忽略了Include.
有没有人有任何想法?
小智 11
嗨,你迟到了,但在使用LinqKits谓词构建器时使用扩展Include方法时遇到了同样的问题.上一个答案中提到的问题是将LinqKits ExpandableQuery转换为ObjectQuery(根据Include扩展的要求)导致null.
但是发现这个链接http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/这是一个Predicate构建器,它不使用AsExpandable来执行搜索,因此可以使用Include方法它.虽然上面的解决方案也适用于我,但这个不同的谓词构建器允许我保持代码更清晰/更一致
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |