Mühe (EF6) Ausnahme beim Zugriff auf DbSet (Der angegebene Schlüssel war nicht im Wörterbuch vorhanden)


Frage

Dies erweist sich als ein wenig schwer nachzuvollziehen, aber wenn ich Effort zum Testen von Entity Framework 6 benutze, bekomme ich anscheinend eine KeyNotFoundException ("Der angegebene Schlüssel war nicht im Wörterbuch vorhanden") Fehler, wenn ich versuche auf einen der DBSet zuzugreifen Repositories.

Ich habe bemerkt, dass es mit ein oder zwei DbSets im DbContext funktioniert, aber sobald ich anfange, mehrere DbSets zum DbContext hinzuzufügen, erhalte ich den obigen Fehler.

Beispielcode (dies ist eine Vereinfachung meines gesamten Codes, der Fehler scheint zufällig zu sein, wenn ich einige DbSets aus dem DbContext auskommentiere und dann wieder einfüge. Ich habe auch Teilklassen an den Modellen, aber es gelingt ihnen manchmal auch, so scheint es seltsam):

Prüfung

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

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

            }

DBContext- und DbSets-Modelle

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

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

            }

Stack Trace:

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

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

            }

Beliebte Antwort

Ich habe das genaue Problem. Es stellte sich heraus, dass ich in einigen meiner SQL-2014-Datenbanktabellen den geographischen SQL-Datentyp verwendet habe und der Aufwand diesen Datentyp nicht unterstützt. Es ist auch nicht geplant, im Moment Unterstützung hinzuzufügen, was mich verlässt in einer echten Quandry, da ich keinen anderen In-Memory-Datenbank-Provider für EF6 finden kann, der das tut!

Möglicherweise gibt es andere neuere Referenztypenfelder, die nicht unterstützt werden, nicht sicher.





Lizenziert unter: CC-BY-SA
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum