Eccezione Sforzo (EF6) durante l'accesso a DbSet (la chiave specificata non era presente nel dizionario)

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

Domanda

Questo si sta dimostrando un po 'difficile da rintracciare, ma quando si utilizza Effort per testare Entity Framework 6, mi sembra di ottenere un errore KeyNotFoundException ("La chiave data non era presente nel dizionario") quando si prova ad accedere a uno dei DBSet repository.

Ho notato che funziona con uno o due DbSet nel DbContext, ma quando comincio ad aggiungere più DbSet a DbContext, ricevo l'errore sopra riportato.

Esempio di codice (questa è una semplificazione del mio intero codice, l'errore sembra casuale quando commento alcuni DbSet dal DbContext e poi li rimetto. Ho anche classi parziali sui modelli, ma a volte succede anche a questi, quindi sembra strano):

Test

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

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

            }

Modelli DBContext e DbSets

            [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);

            }

Risposta popolare

Sto avendo il problema esatto. È venuto fuori perché stavo usando il tipo di dati geografici SQL in alcune delle mie tabelle del database SQL 2014, e lo sforzo non supporta questo tipo di dati , e non ci sono piani per aggiungere il supporto per questo momento, il che mi lascia in un vero dilemma perché non riesco a trovare nessun altro provider di database in-memory per EF6 che lo faccia!

Potrebbero esserci altri campi di tipo di riferimento più recenti che non supporta, non sono sicuri.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché