Effort.Exceptions.EffortException:データベースが初期化されていない - コミットされていない更新の後?

c# effort entity-framework entity-framework-6

質問

この例外はなぜ発生するのですか?これはバグですか?

私はEffortを使ってデータベースのメモリインスタンスを作成し、この面白いシナリオを実行します。

  1. DbContext1開く
  2. Tableに項目を追加する(保存しない)
  3. DbContext1閉じる
  4. DbContext2開く
  5. Table項目を数えます

Effort.Exceptions.EffortException : Database has not been initialized.

私はまたしてカウントする(ステップ5)を実行する場合は、 DbContext1その後のカウント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();
   }    
}    

完全な例外:

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();
   }    
}    

人気のある回答

例外メッセージに記載されているアドバイスを受け取り、 usingステートメント内で次の行をテストに追加しました

    db.Database.CreateIfNotExists();

それは私のために働いた。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ