EF - 生成查询(IQueryable)并使用DBContext的新实例执行

时间:2015-12-03 16:44:51

标签: c# entity-framework linq-to-entities entity-framework-6

我有一些Querybuilder类用于构建并返回IQueryable<CarPricelistPrice>或生成DTO以满足我的需求的一些实体(链接方法)

示例:

CarPriceListPriceBuilder.Create()
            .TerminIntersect(from, to)
            .OfficeId( officeId )
            .PointInTime( DateTime.Now.AddDays(-1))
            .Build()
            .ToIQueryable()

My Build方法根据构建方法之前设置的条件生成IQueryable。

在CarPriceListPriceBuilder类中我定义了属性:

private IQueryable<CarPricelistPrice> carPricelistPriceQuery

和我的Build()方法的一部分:

....if (carCategoryId.IsNotNull())
        {
            carPricelistPriceQuery = carPricelistPriceQuery.Where(c => c.CarCategoryId == carCategoryId);
        }

        if (dateFrom != null && dateTo != null)
        {
            carPricelistPriceQuery = carPricelistPriceQuery.Where(c => c.DateFrom < dateTo.Value && c.DateTo > dateFrom.Value);
        }....

所以在我的构建结束时,我已经准备好将IQueryable执行到数据库(.ToList())但是根据我的需要,我可能会调用.Any()或稍后添加一些额外的过滤器。

当我构建此查询时,我没有DBContext,所以我的问题是如何针对数据库运行carPricelistPriceQuery,或者如何将此查询附加到DBContext并运行.ToList().Any()或{{1 }}?

我正在阅读有关已编译的查询委托或将其存储到.FirstOrDefault()但我无法让它工作的信息。

0 个答案:

没有答案