訪問DbSet時的Effort(EF6)異常(字典中沒有給定的密鑰)

.net effort entity-framework entity-framework-6 linq

這被證明有點難以追查,但是當使用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 with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因