首页 > 解决方案 > 具有共享连接的内存数据库

问题描述

我目前正在努力使用内存数据库(使用此库: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)

有人知道为什么吗?谢谢。

标签: c#.netin-memory-databaseeffort

解决方案


推荐阅读