实体框架-如何避免命令不同步异常

罗纳德·麦克比恩

我使用实体框架(DbContext),UnitOfWork和存储库模式编写了一个小型应用程序以下代码

using (IUnitOfWork testUow = uowFactory.CreateUnitOfWork())
{
    foreach (Transponder transp in testUow.Transponders.GetAll()) // outer sql
    {
        var query = testUow.Animals.GetAll()
                    .Where(anim => anim.TransponderId == transp.Id); // inner sql

        // next line throws EntityCommandException: 
        Animal test = query.Single(); 
    }
}

产生一个

EntityCommandException: {"Commands out of sync; You can't run this command now"}

TranspondersAnimals是我的存储库。

为什么会出现此异常?

像我的示例中那样具有生成嵌套的sql命令的代码不是很好(在代码示例中标记为内部和外部sql)。

如何更改代码/设计以避免这种异常?

我知道我可以重写linq查询,因此这是一个有效的衬板,但是我对更通用的解决方案感兴趣。

格特·阿诺德

MySql(连接器)不支持多个活动结果集(MARS)。因此,在执行外部查询(在循环迭代时运行)时,它无法通过同一连接读取其他结果集。

因此,正如您所说,重写查询就是解决方案。无论如何还是更好,因为这里有一个1 + N的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架主键异常

来自分类Dev

实体框架如何工作

来自分类Dev

实体框架如何工作

来自分类Dev

实体框架:在不同的DbContext中共享实体

来自分类Dev

实体框架乐观并发异常

来自分类Dev

实体框架中的并发异常

来自分类Dev

实体框架中的异常处理

来自分类常见问题

如何清除实体框架中的跟踪实体

来自分类Dev

实体框架:如何选择嵌套实体

来自分类Dev

实体框架实体加载如何工作?

来自分类Dev

实体框架-LINQ的SQL命令

来自分类Dev

实体框架中的不同记录

来自分类Dev

如何复制实体框架FirstOrDefaultAsync

来自分类Dev

如何使实体框架异步执行

来自分类Dev

实体框架 SaveChanges 如何工作?

来自分类Dev

手动同步实体框架

来自分类Dev

将实体框架异常转换为HttpStatusCodes

来自分类Dev

处理实体框架4中的异常

来自分类Dev

ICollectionView抛出实体框架附加异常

来自分类Dev

实体框架异常:指定的架构无效。

来自分类Dev

未处理参数异常(实体框架,WCF)

来自分类Dev

实体框架在加载时引发异常

来自分类Dev

使用实体框架的IdentityRole导航属性异常

来自分类Dev

实体框架异常:指定的架构无效。

来自分类Dev

实体框架空指针引用异常

来自分类Dev

Skip and Take 在实体框架中生成异常

来自分类Dev

来自两个不同实体的实体框架联接表

来自分类Dev

实体框架:TransactionScope具有不同的IsolationLevel

来自分类Dev

实体框架生成不同的SQL查询