私が理解できないことは、コンテキストを変更してコミットする前に同じトランザクションで変更を取得できるかどうかです。TransactionScopeをEntity Framework 6と併用する
これは - 私が探して何です:
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
using (var context = new DbContext())
{
//first I want to update an item in the context, not to the db
Item thisItem = context.Items.First();
thisItem.Name = "Update name";
context.SaveChanges(); //Save change to this context
//then I want to do a query on the updated item on the current context, not against the db
Item thisUpdatedItem = context.Items.Where(a=>a.Name == "Update name").First();
//do some more query
}
//First here I want it to commit all the changes in the current context to the db
scope.Complete();
}
誰かが私が作業パターンを理解し、私を見る助けることができますか?
これはdbをローに挿入し、トランザクションがロールバックされるとローを削除しますか?または、行のIDをどのように取得しますか? @ kienct89 –
transaction.Commit()を呼び出すまで、データベースに行を挿入しません。IDは一時的にメモリに割り当てられます –
ok、例と説明ありがとうございます。私はこれを試して、あなたに戻ってきます –