2011-01-18 23 views

答えて

19

ObjectStateを変更するにはどうすればよいですか?

context.ObjectStateManager.ChangeObjectState(job, System.Data.EntityState.Modified); 

よりMSDN:ObjectStateManager.ChangeObjectState Methodより。

+6

EF6はそのコンテキストを現在の状態に保つための精神を持っています.Entry(job).State = System.Data.Entity.EntityState.Modified – matto0

+1

EFのAPIは、レンガの壁と話すようなものです。 –

2

私はthis answerの第2部分を切り離されたオブジェクトで作業していると思います。

1

あなたが最初の仕事を得るために持っている、あなたは成功し、それを更新することができ、以下のCHKは、対応するJobs.csファイルがコミットされたとき、これは動作しない場合がありますことを、別の理由がある

var job = context.Jobs.Where(p => p.Id == id).FirstOrDefault(); 
//apply your changes 
job.Title = "XXXX"; 
///.... 
context.SaveChanges(); 
+0

var job = context.Jobs.SingleOrDefault(p => p.Id == id); – jolySoft

0

スニペットが、.edmxファイルはありません。つまり、プロパティは存在していてもマッピングされていないため、EFは変更されたオブジェクトを考慮しません。たとえば、次のように

... 
using (var dao = new DbContext()) 
{ 
    dao.Jobs.Attach(job); 
    job.SomeProperty = 1234; // SomeProperty exists but is not in the .edmx 
    dao.SaveChanges(); 
} 

SomePropertyがJobs.csに存在するが、.edmxファイルから欠落している、このコードはコンパイルして何が間違っているが、SomePropertyがデータベースで更新されないことをヒントなしで実行するかどうか。この1つを見つけるために私を一日の最高の部分に連れて行った。

関連する問題