Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “如何修复”;System.InvalidOperationException:当读卡器关闭时调用读取的尝试无效;调用已编译查询时_C#_Ef Core 2.0_Compiled Query - Fatal编程技术网

C# “如何修复”;System.InvalidOperationException:当读卡器关闭时调用读取的尝试无效;调用已编译查询时

C# “如何修复”;System.InvalidOperationException:当读卡器关闭时调用读取的尝试无效;调用已编译查询时,c#,ef-core-2.0,compiled-query,C#,Ef Core 2.0,Compiled Query,调用编译后的查询后调用ToList()时,我有时(!)会收到一个异常-System.InvalidOperationException:当读卡器关闭时调用Read的尝试无效 为每个“invoke”调用创建DB上下文,在调用之前同步编译查询。代码片段称为一次性pro文件,异步读取 通过以下方式初始化、编译和调用查询 public Func<SANAContext, int, string, IEnumerable<KeyValuePair<string, Importartike

调用编译后的查询后调用ToList()时,我有时(!)会收到一个异常-System.InvalidOperationException:当读卡器关闭时调用Read的尝试无效

为每个“invoke”调用创建DB上下文,在调用之前同步编译查询。代码片段称为一次性pro文件,异步读取

通过以下方式初始化、编译和调用查询

public Func<SANAContext, int, string, IEnumerable<KeyValuePair<string, Importartikelhash>>> ImportingArticlesHashesQuery;

...

ImportingArticlesHashesQuery = EF.CompileQuery((SANAContext db, int LaLiNr, string lagerId) => db.Importartikelhash.AsNoTracking()
            .Where(la => la.LieferantartikelId == LaLiNr && string.Compare(la.LagerId, lagerId, StringComparison.Ordinal) == 0).Select(a => new KeyValuePair<string, Importartikelhash>(a.LieferartikelNr, a)));

...    

List<KeyValuePair<string, Importartikelhash>> records = ImportingArticlesHashesQuery.Invoke(context, supplier.SupplierInternalId, warehouse.Id).ToList();  
什么会导致问题?我意识到异步操作存在一些问题,但我不知道在哪里搜索它


非常感谢您的帮助

请尝试在上下文中增加命令超时时间,如下所示:

    public class MyDatabase : DbContext
{
    public MyDatabase ()
        : base(ContextHelper.CreateConnection("Connection string"), true)
    {
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
    }
}

我也考虑过,但我已经将TimeOut设置为一个相当大的值(500)
    public class MyDatabase : DbContext
{
    public MyDatabase ()
        : base(ContextHelper.CreateConnection("Connection string"), true)
    {
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
    }
}