C# 集成测试中的多个数据库上下文似乎间歇性失败,添加ToList()不会';我修不好

C# 集成测试中的多个数据库上下文似乎间歇性失败,添加ToList()不会';我修不好,c#,entity-framework,entity-framework-6,dbcontext,C#,Entity Framework,Entity Framework 6,Dbcontext,我在同事的集成测试中遇到间歇性问题,该测试作为单元测试运行。有时它在我的机器上工作,有时不工作,但当它停止工作时,它似乎会“卡住”一段时间不工作。我也不知道如何让它再次工作 当我尝试调试它时,错误出现在第二个DBContext(ctx1)中—它的错误是: Message=无法将“MyCollection”上的“UpdateOn”属性设置为“null”值。必须将此属性设置为“System.DateTime”类型的非空值。 Source=EntityFramework collection.Loca

我在同事的集成测试中遇到间歇性问题,该测试作为单元测试运行。有时它在我的机器上工作,有时不工作,但当它停止工作时,它似乎会“卡住”一段时间不工作。我也不知道如何让它再次工作

当我尝试调试它时,错误出现在第二个DBContext(ctx1)中—它的错误是:

  • Message=无法将“MyCollection”上的“UpdateOn”属性设置为“null”值。必须将此属性设置为“System.DateTime”类型的非空值。 Source=EntityFramework

  • collection.Local中只有一个项,即在以前的上下文中添加的新项

  • collection.ResultsView-当我尝试枚举收集结果时,出现另一个错误: “已存在与此命令关联的打开的DataReader,必须先关闭它。”

  • MyDBContext最终基于EF6 DbContext

            public void CanAddItem()
            {
                using (var transaction = new TransactionScope(TransactionScopeOption.Required,
                                                                new TimeSpan(0, 15, 0),
                                                                TransactionScopeAsyncFlowOption.Enabled))
                {
                    int initialCount;
                    // Arrange
                    using (IMyDBContext ctx = new MyDBContext(new AppConfigReader()))
                    {
                        var matched = ctx.MyCollection;
    
                        initialCount = matched.Count();
    
                        var item = new MyItem
                        {
                            UpdatedOn = DateTime.Now;
                        };
    
                        // Act
                        ctx.MyCollection.Add(item);
                        ctx.SaveChanges();
                    }
    
                    //Assert
                    using (IMyDBContext ctx1 = new MyDBContext(new AppConfigReader()))
                    {
                        var collection = ctx1.MyCollection;
    
                        collection.Should().HaveCount(initialCount + 1);
                    }
                }
    
    
    我尝试添加
    .ToList()
    以使
    var collection=ctx1.MyCollection.ToList()
    ,但它只是将错误移到该代码行中

    我认为他使用两个上下文的基本原理是证明值总是写入数据库,并且不会被困在DbContext中。它总是在他的机器上运行


    我需要让它一直工作下去。任何帮助都将不胜感激。

    因为全世界都会看到我愚蠢的错误。最后,我运行了SQL查询,这使我意识到实体定义与数据库定义不同,而且在我的数据库中,不时会出现UpdatedOn为NULL的值


    吸取的教训。

    如果已经修复,请您接受自己的答案:)上面说我必须等待2天:(