EFのdbContextの動作についてちょっと混乱します。Entity Frameworkコンテキストとの混乱
_context.Persons.Add(_person)
(人が有効なエンティティであると仮定した場合)、私が(_context.SaveChanges()を呼び出す前に)クエリーPersonsを追加すると、結果に追加された人が含まれますか?例えば
:私はこれを試してみてくださいたびにコンテキストが、私は、コンテキストにこの新しい人を追加したという事実のトラックを失ったかのように
Person _person = new Person() {Firstname = "Bill", Lastname = "Snerdly"};
_context.Persons.Add(_person);
var _personList = _context.Persons.Where(p => p.Lastname.StartsWith("Sne"));
、それはそうです。
私は、既存の人物を編集して人物を添付して状態を変更した場合、そのコンテキストを照会することで行われた変更を追跡し、結果に戻すことができます。たとえば、次のようにこの場合
//Assuming that Person 5 exists with the name William Snerdly
Person _person = new Person() {Id = 5, Firstname = "Bill", Lastname = "Snerdly"};
_context.Persons.Attach(_person);
_context.Entry(_person).State = System.Data.EntityState.Modified;
var _personList = _context.Persons.Where(p => p.Lastname.StartsWith("Sne"));
、5のidを持つ人が代わりにウィリアムの名前のビルでリストに表示されますように思えます。 IOWでは、コンテキストがデータを照会したが変更は保持されていたが、最初のシナリオではコンテキストがデータを照会したが追加されたアイテムは無視された。ちょっと矛盾しているようです。
これを正しく理解していますか、何か不足していますか?
ありがとうございます。
あなたの答えに感謝します。私の投稿を編集している間にあなたは答えました。コンテキストが編集を尊重するのはなぜですか(データベースにコミットされていないにもかかわらず)が、追加を無視しますか? – RHarris
今更新されました。 – cynic
ありがとう、それは多くの意味があり、実際に私がやろうとしていたことに対処しています。私はEF4.1でトランザクションを処理する方法を調べる必要があります – RHarris