为什么会出现这种异常?这是个虫子吗?
我正在使用Effort,EF测试库来创建我的数据库的内存实例,并遇到这样一个有趣的场景:
DbContext1Table (不保存)DbContext1DbContext2Table中计数项目Effort.Exceptions.EffortException : Database has not been initialized.
但是,如果我也在DbContext1中执行计数(步骤5),那么DbContext2中的计数不会失败吗?
全码
public void TestEF()
{
var factory = new InMemoryMyApplicationDbContextFactory();
using (var db = factory.CreateDbContext())
{
//uncomment this line to prevent exception - why????
//db.Orders.Count();
db.Orders.Add(new Order{ Id = Guid.NewGuid() });
// intentionally do not call db.SaveChanges()
}
using (var db = factory.CreateDbContext())
{
// throws an exception if no read was performed above
db.Orders.Count();
}
} 完全例外:
Effort.Exceptions.EffortException : Database has not been initialized.
If using CodeFirst try to add the following line:
context.Database.CreateIfNotExists()
at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) 发布于 2018-04-14 14:31:04
我接受了异常消息中提到的建议,并在using语句中将下面一行添加到我的测试中
db.Database.CreateIfNotExists();这对我来说很管用。
https://stackoverflow.com/questions/46135973
复制相似问题