gpt4 book ai didi

.net - 访问 DbSet 时的 Effort (EF6) 异常(字​​典中不存在给定的键)

转载 作者:行者123 更新时间:2023-12-04 21:37:45 24 4
gpt4 key购买 nike

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

我注意到它与 DbContext 中的一两个 DbSet 一起工作,但是一旦我开始向 DbContext 添加多个 DbSet,我就会收到上述错误。

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

测试

            [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 模型
    public class StubEntityModelA
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}

public class StubEntityModelB
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}

public class StubEntityModelC
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}

public class StubDbContext : DbContext
{
public StubDbContext(DbConnection connection): base(connection, true)
{
}
public virtual DbSet<StubEntityModelA> Models1 { get; set; }
public virtual DbSet<StubEntityModelB> Models2 { get; set; }
public virtual DbSet<StubEntityModelC> Models3 { get; set; }
}

堆栈跟踪:
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Effort.Provider.EffortProviderManifest.GetStoreType(TypeUsage edmType)
at System.Data.Entity.ModelConfiguration.Edm.Services.StructuralTypeMappingGenerator.MapTableColumn(EdmProperty property, String columnName, Boolean isInstancePropertyOnDerivedType)
at System.Data.Entity.ModelConfiguration.Edm.Services.PropertyMappingGenerator.Generate(EntityType entityType, IEnumerable`1 properties, EntitySetMapping entitySetMapping, MappingFragment entityTypeMappingFragment, IList`1 propertyPath, Boolean createNewColumn)
at System.Data.Entity.ModelConfiguration.Edm.Services.TableMappingGenerator.Generate(EntityType entityType, DbDatabaseMapping databaseMapping)
at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypes(DbDatabaseMapping databaseMapping)
at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.Generate(EdmModel conceptualModel)
at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
at XXXX.Business.Test.XXXXTests.IXXXXXXMethod.ShouldInsertRecordWhenNoneAlreadyExist() in C:\Workspaces\XXX\XXXXX\XXXXX.Business.Test\XXXXXXTests.cs:line 125

最佳答案

我遇到了确切的问题。原来是因为我在我的一些 SQL 2014 数据库表中使用了 SQL geography 数据类型,并且努力 doesn't support this data type ,而且目前也没有计划添加对它的支持,这让我陷入了真正的困境,因为我找不到任何其他适用于 EF6 的内存数据库提供程序!

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

关于.net - 访问 DbSet 时的 Effort (EF6) 异常(字​​典中不存在给定的键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com