dom*_*mer 4 .net c# iqueryable objectquery eager-loading
我正在尝试在这篇文章中应用建议:提示22 - 如何使Include真正包括在内
它建议在实体框架(4.2)中确保急切加载的解决方法.该解决方法涉及将IQueryable转换为ObjectQuery.
但是,当我尝试这个时,如帖子所示,查询返回null.
我的查询是(ctx是DbContext):
IEnumerable<Coupon> coupons =
from x in ctx.Coupons
where x.LanguageCode.Equals("EN", StringComparison.InvariantCultureIgnoreCase) && x.CategoryId == MainCategoryId && x.Date >= fromDate && x.Date <= toDate
select x;
Run Code Online (Sandbox Code Playgroud)
这按预期工作.
但是,当我使用时,
IEnumerable<Coupon> coupons =
(from x in ctx.Coupons
where x.LanguageCode.Equals("EN", StringComparison.InvariantCultureIgnoreCase) && x.CategoryId == MainCategoryId && x.Date >= fromDate && x.Date <= toDate
select x) as ObjectQuery<Coupon>;
Run Code Online (Sandbox Code Playgroud)
它为"优惠券"指定了一个空值.
知道我做错了什么吗?
小智 5
从评论到答案:
ObjectQuery<T>仅当查询确实是一个时ObjectQuery<T>,转换为仅适用于它,它将不适用于任何其他查询IQueryable<T>.由于您使用的是a DbContext而不是a ObjectContext,因此查询的类型不同.但是,您不需要强制转换为正确的类型,命名空间中的DbExtensions.Include扩展方法System.Data.Entity接受任何IQueryable<T>类型,并调用适当的基础Include方法.您可以使用它,避免强制转换,从而避免在代码中明确指定查询的类型.
| 归档时间: |
|
| 查看次数: |
8201 次 |
| 最近记录: |