我目前正在努力使用内存数据库(使用此库: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)
有人知道为什么吗?谢谢。