c# - 具有共享连接的内存数据库
问题描述
我目前正在努力使用内存数据库(使用此库:https ://entityframework-effort.net/ )进行一些测试。
我遇到的问题是,在尝试对所有上下文使用共享连接时出现异常。
这是我正在使用的:
var connection = Effort.DbConnectionFactory.CreatePersistent(Guid.NewGuid().ToString());
referenceDbContext = new ReferenceDbContext(connection);
personDbContext = new PersonDbContext(connection);
referenceDbContext.AddRange(...); // this works fine
referenceDbContext.SaveChanges(); // same context works fine too
personDbContext.AddRange(...); // other context: this fails
...
堆栈跟踪:
Message:
System.InvalidOperationException : Index was not found
Stack Trace:
DatabaseReflectionHelper.FindIndex(ITable table, IKeyInfo key, Boolean unique)
DatabaseReflectionHelper.CreateAssociation(Database database, DbRelationInfo relation)
DbContainer.Initialize(DbSchema schema)
DbContainer.Initialize(StoreItemCollection edmStoreSchema)
<>c__DisplayClass7_0.<DbCreateDatabase>b__0(DbConnection x)
EffortProviderServices.Wrap[T](DbConnection connection, Func`2 action)
EffortProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
ObjectContext.CreateDatabase()
DatabaseOperations.Create(ObjectContext objectContext)
DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext)
InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState)
Database.Create(DatabaseExistenceState existenceState)
CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context)
<>c__DisplayClass66_0`1.<CreateInitializationAction>b__0()
InternalContext.PerformInitializationAction(Action action)
InternalContext.PerformDatabaseInitialization()
<>c.<InitializeDatabase>b__58_0(InternalContext c)
RetryAction`1.PerformAction(TInput input)
LazyInternalContext.InitializeDatabaseAction(Action`1 action)
LazyInternalContext.InitializeDatabase()
InternalContext.Initialize()
InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
InternalSet`1.Initialize()
InternalSet`1.get_InternalContext()
InternalSet`1.AddRange(IEnumerable entities)
DbSet`1.AddRange(IEnumerable`1 entities)
有人知道为什么吗?谢谢。
解决方案
推荐阅读
- python - 用scrapy抓取论坛不产生下一页
- vba - VBA 电源运算符 (^) 在 64 位 VBA 中未按预期工作
- python - 删除熊猫数据框中共享多列的行
- cpu-architecture - 内存屏障:软件黑客的硬件视图 - 使队列无效
- python - 如何为相等的 logits 和标签定义交叉熵?
- symfony - Symfony 4 + Doctrine DBAL 缓存驱动
- python - Squish 将应用程序上下文设置为 aut 由 aut under test 启动
- sql - 关于通过使用两个表之间的连接来汇总数据
- c++ - 如何聚合 protobuf 消息
- wordpress - WooCommerce 结帐问题和“返回商店”按钮