Exception Effort (EF6) lors de l'accès à DbSet (la clé donnée n'était pas présente dans le dictionnaire)

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

Question

Cela s'avère être un peu difficile à retracer, mais lorsque j'utilise Effort pour tester Entity Framework 6, il semble que je reçois une erreur KeyNotFoundException ("La clé donnée n'était pas présente dans le dictionnaire") lors d'une tentative d'accès à l'un des DBSet. les dépôts.

J'ai remarqué que cela fonctionne avec un ou deux DbSets dans le DbContext, mais une fois que je commence à ajouter plusieurs DbSets au DbContext, je reçois l'erreur ci-dessus.

Exemple de code (c’est une simplification de la totalité de mon code, une erreur semble aléatoire lorsque je commente certains DbSets du DbContext, puis que je les rétablis. J'ai aussi des classes partielles sur les modèles, mais cela réussit parfois aussi, semble bizarre):

Tester

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

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

            }

Modèles DBContext et DbSets

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

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

            }

Trace de la pile:

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

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

            }

Réponse populaire

J'ai le problème exact. En fait, c’est parce que j’utilisais le type de données géographiques SQL dans certaines de mes tables de base de données SQL 2014, et que effort ne prend pas en charge ce type de données. je ne trouve aucun autre fournisseur de base de données en mémoire pour EF6 qui le fasse!

Il est possible que d'autres types de champs de référence plus récents ne soient pas pris en charge, mais ce n'est pas certain.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi