我正在使用这个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/