2017-04-20 8 views
0

Entity Frameworkで簡単な更新を実行しようとしています。誰かが私の更新ステートメントに間違っていることを教えてもらえますか?Entity Frameworkは、状態= EntityState.ModifiedのSaveChanges()の後にレコードを更新しません。

すべてがスムーズに実行されます。実行時にエラーは発生しませんが、データベースで何も変更されません。あなたがいない無効にEFの変更の追跡を持っている場合にも

var cartItem = context.Carts.FirstOrDefault(x => x.id == id); 
    cartItem.Quantity = quantity; 

    context.SaveChanges(); 

:ここ

は、私はそれが SaveChangesメソッドを呼び出す前に、エンティティを装着しているためだ

var cartItem = context.Carts.FirstOrDefault(x => x.id == id); 
cartItem.Quantity = quantity; 
context.Entry(cartItem).State = EntityState.Modified; 
context.Carts.Attach(cartItem); 

context.SaveChanges(); 

答えて

0

私は私の問題への解決策を見つけました。この問題は、コードミスではなく、エンティティフレームワーク自体のバグであった。現在のアイテムのモデルのプロパティを取る代わりに、SaveChangesのedmxによって生成されたオブジェクトの1つと同じ名前のaspxページがあるとき。または/ mは、Webページのプロパティを取得し、クエリの正しい値を見つけることができないため、null参照例外をスローします。ところで、援助と忍耐をありがとう。

1

役に立てば幸い私のコードですStateModifiedに変更する必要はありません。EFがあなたのために仕事をします。 Attachメソッドを呼び出すときはStateプロパティをUnchangedに設定しています。

あなたはAttachをこのように使用することができます。

var cartItem= new Cart{id=id}; //Create an instance of your entity setting the key 
context.Carts.Attach(cartItem);// Attach the entity to the context 
cartItem.Quantity = quantity; //Set the property 
//If you haven't disabled change tracking or proxy creation, then you don't need to change the State, EF will do it. 
context.Entry(cartItem).State = EntityState.Modified; 

context.SaveChanges(); 
+0

エンティティが接続されていない状態で変更を保存しようとすると、そのようなエンティティが存在しないため、コンテキストの代わりにnull参照例外が発生します –

+0

null参照例外?私はなぜ、なぜか、私は別の解決策を 'Attach'を使って投稿します。 – octavioccl

+0

これは奇妙なことだと私はここで尋ねました。 –

関連する問題