2009-08-27 1 views
4

私はこのSOの質問:ADO.net Entity Framework: Update only certian properties on a detached entityを見ていました。これは私にとって大きな助けとなりました。私は変更を加える前にエンティティを付ける必要があることを知っています。しかし、どうすればいいのですか?EntityFramework .net 4簡単な方法でエンティティを更新してください

MVC Webサイト、ID、名前、住所などのフィールドを持つカスタマー更新ページがあります。私のMVCはこれをCustomerエンティティに解析しています。次の操作を行うにはどうすればよいですか。

  • エンティティを更新し、変更を保存します。
  • エンティティをロードしてから変更が加えられた場合は、例外をキャッチします。

答えて

3

はこのような何か試してみてください(擬似コードを、私はmisrememberedいくつかのメソッド名かもしれません):このコードはStub Entityトリックを使用しています

public void Update(Customer entity) 
{ 

    using (MyContext ctx = new MyContext()) 
    { 
     // Create a stub entity and attach it 
     Customer db = new Customer {ID = entity.ID}; 
     ctx.Customers.Attach(db); // ctx.AttachTo("Customers", db) in 3.5 sp1 

     // ApplyPropertyChanges in 3.5 Sp1 
     ctx.ApplyCurrentValues(entity); 
     ctx.SaveChanges(); 
    } 
    ... 
} 

を。元のエンティティについてEFにもっと詳しく説明する必要がある場合は、上記のブログ記事を参照してください。スタブを使用することもできます。また

あなたはちょうどこの操作を行うことができ、並行性については全く気にしない場合:

public void Update(Customer entity) 
{ 
    using (MyContext ctx = new MyContext()) 
    { 
     // pull the entity from the database 
     Customer db = ctx.Customers.First(c => c.ID == entity.ID); 

     // ApplyPropertyChanges in 3.5 Sp1 
     ctx.ApplyCurrentValues(entity); 
     ctx.SaveChanges(); 
    } 
} 

希望これは

アレックス・ジェームス

Entity Framework Tips

+0

'ApplyCurrentValuesを()'役立ちます方法は私のために存在しません。 –

+0

@Alex James:Stub EntityとEntity Framework Tipsへのリンクをありがとう。それらは知っておくべき素晴らしいトリックです。 – muruge

関連する問題