2011-12-07 22 views
1

私はEntity Framework 4.1を使用して、自分のデータベースに対してCRUD操作を実行しています。Entity Framework Update - 値を上書きするかどうかを指定します。

User.Forename = Joe 
User.Surname = Bloggs 

アイブ氏は

と私の編集方法にユーザーオブジェクトを渡さ:

public void Edit(User user) 
    { 
     _context.Entry(user).State = System.Data.EntityState.Modified; 
     _context.SaveChanges(); 
    } 

アイブ氏が取得したユーザーオブジェクトに更新する

this.Configuration.ProxyCreationEnabled = false; 
this.Configuration.LazyLoadingEnabled = false; 
this.Configuration.AutoDetectChangesEnabled = false; 

私の方法:私は、次のプロパティをオフにしています

User.Forename = Joe 
User.Surname = Bloggs 

私のユーザーオブジェクトは私のEditメソッドには向いていますが、私は上記のようにそのプロパティを変更していません。プロパティが同じ値を持つデータベースに書き込まれるか、Entity Frameworkによって値が変更されていないことがわかりますか?

答えて

2

明示的に状態をModifiedに設定しているため、プロパティ値が変更されていない場合でも、EFは更新ステートメントをデータベースに送信します。

EFがデータベースを同じ値で更新しないようにするには、AutoDetectChangesEnabledfalseに設定しているため、値が変更されたかどうかを追跡するロジックを追加する必要があります。

関連する問題