c# - EF 6 Plus - 如何进行 future 的原始查询

标签 c# entity-framework linq entity-framework-6

我正在使用这个EF 6 PLUS库,我正在尝试进行 future 的原始查询,如下所示

context.Database.SqlQuery<SomeClass>("query here").Future();

但是这个库中没有这样的选项,我也尝试使用这个库的 DeferredFirst(), DeferredSingle() 但没有运气,这些方法不让我插入原始查询。

如何使用这个库或另一个库来实现这一目标?

最佳答案

Future以及所有类似 DeferredFirst 的方法IQueryable<T> 上的扩展方法:

public static QueryFutureEnumerable<T> Future<T>(this IQueryable<T> query)

Database.SqlQuery返回DbRawSqlQuery<T> ,它实现 IEnumerable<T> ,不是IQueryable<T> ,因此扩展不适用。没有办法执行SqlQuery合二为一Future与其他查询进行批处理。

您可以通过在执行混合查询之前打开上下文的连接并在之后关闭它来减轻一些“痛苦”。这可以防止 EF 为其执行的每个单独查询关闭和打开连接。它与以可延迟批处理执行查询不同,但它可能会提高一些效率。

try
{
    context.Database.Connection.Open();
    ...
}
finally
{
    context.Database.Connection.Close();
}

关于c# - EF 6 Plus - 如何进行 future 的原始查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69694514/

相关文章:

c# - Ninject 注入(inject)属性构造函数、字段或方法

c# - 将验证实现为方法还是属性?

c# - 动态生成具有嵌套属性的 LINQ select

c# - 使用 LINQ to Objects 在一个集合中查找与另一个集合不匹配的项目

c# - 从 C# 访问 Win32 C/C++ 结构成员

c# - 如何在 ToDictionary 转换中获取重复键?

c# - 在 Entity Framework 4.1 中查询数据页面并获取总数的更好方法?

c# - 更改参数 - 谁负责?

c# - 只更新 EF 实体上未设置为 null 的某些属性

字符串值中的 C# LINQ 日期时间