访问DbSet时的Effort(EF6)异常(字典中没有给定的密钥)


这被证明有点难以追查,但是当使用Effort测试Entity Framework 6时,我似乎在尝试访问其中一个DBSet时收到KeyNotFoundException(“给定的密钥在字典中不存在”)错误库。

我注意到它在DbContext中使用了一个或两个DbSet,但是一旦我开始向DbContext添加多个DbSets,我收到上述错误。

示例代码(这是我整个代码的简化,当我从DbContext中注释掉一些DbSets然后把它们放回去时,错误似乎是随机的。我也有模型上的部分类,但它有时也成功,所以似乎奇怪的):

测试

            [Fact]
            public void MyTest()
            {
                var connection = Effort.DbConnectionFactory.CreateTransient();
                var context = new StubDbContext(connection);

                var count = context.Models1.Count();
                Assert.Equal(count, 0);

            }

DBContext和DbSets模型

            [Fact]
            public void MyTest()
            {
                var connection = Effort.DbConnectionFactory.CreateTransient();
                var context = new StubDbContext(connection);

                var count = context.Models1.Count();
                Assert.Equal(count, 0);

            }

堆栈跟踪:

            [Fact]
            public void MyTest()
            {
                var connection = Effort.DbConnectionFactory.CreateTransient();
                var context = new StubDbContext(connection);

                var count = context.Models1.Count();
                Assert.Equal(count, 0);

            }

热门答案

我遇到了确切的问题。原来是因为我在我的一些SQL 2014数据库表中使用了SQL地理数据类型,并且努力不支持这种数据类型 ,并且目前还没有计划为它添加支持,这让我失望在一个真正的quandry,因为我找不到EF6的任何其他内存数据库提供程序!

可能还有其他较新的引用类型字段,它也不支持,不确定。





许可下: CC-BY-SA
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因