2016-09-21 9 views
0

関連する6つのテーブルがあります。私はビューモデルを使用して、私のビュー内の6つのテーブルすべてからプロパティを表示しています。私は上記の構造を使用して単一のトランザクションでデータを追加することができます。しかし、データの編集中に、「ストアの更新、挿入、削除のステートメントが予想外の行数(0)に影響を与えました。エンティティがロードされてから、エンティティが変更または削除されている可能性があります。エラーメッセージ。mvc efで関連するテーブルを更新する

メッセージから、0行が一部のテーブルで影響を受けているようです。私の見解では、すべての価値が編集されるわけではない可能性があります。一部のテーブルに属する一部の値だけが編集され、一部はそのまま保存されます。だから、一つのテーブルから値が全く編集されていない場合、私は次の操作を実行しようとする場合は、上記のエラーが

db.Entry(tbl).State = EntityState.Modified; 
db.SaveChanges(); 

アップポップ値テーブルだけのエンティティの状態を変更する方法はあります編集ビューで編集しますか?それとも、これに対して他のより良いアプローチがありますか?

助けてください。ありがとう。私たちは次のことをやったここでのプロジェクトのために

+0

http://stackoverflow.com/questions/1836173/entity-framework-store-update-insert-or-delete-statement-affected-an-unexpec – Nsevens

+0

@Nsevens URLをお寄せいただきありがとうございますが、私はすでにそれを行っていますそれは私のエラーを解決するのに役立たなかった。 – arpymastro

答えて

0

:おそらく

重要なのは、Context.People.Attach()方法です。

Context.People.Attach(person); 

// Disable validation otherwise you can't do a partial update 
Context.Configuration.ValidateOnSaveEnabled = false; 

Context.Entry(person).Property(x => x.AddressId).IsModified = true; 
Context.Entry(person).Property(x => x.Birthday).IsModified = true; 
Context.Entry(person).Property(x => x.Name).IsModified = true; 
... 

await Context.SaveChangesAsync(); 

これはおそらくあなたが作業できるものですか?同じアプローチがあなたのケースに役立つかどうかは不明です。エンティティを編集する

0

例:

//Get the database entry 
var entity = db.Person.First(c=>c.ID == 1); 
//OR 
//Attach a object to the context, see Nsevens answer. 
db.Person.Attach(entity); 

//Change a property 
entity.Job = "Accountant"; 

//State it's a modified entry 
db.Entry(entity).State = EntityState.Modified; 

//Save 
db.SaveChanges(); 

あなたが複数のエントリを編集している場合は、foreachループで、たとえば、EntityState.Modifedに一人一人を設定する必要があります。

+0

上記の例では、エンティティの単一のプロパティ(ジョブ)が変更されています。プロパティに変更が加えられていない場合でもこれは機能しますか?あるいは、(ビューから)プロパティに対して新しい/更新された値が提供されているかどうかを追跡する方法はありますか?エンティティの状態だけが変更されていますか? – arpymastro

+0

これはあなたのアプリで構築する必要があるロジックのように聞こえる。エンティティが変更されたかどうか手動で追跡するか、すべてのエンティティをデータベースオブジェクトと比較します。理想的には、変更されていない項目については 'EntitiyState'を変更すべきではありませんが、編集された項目の数が比較的少ない場合は、リソースを浪費するので大丈夫です。 – Wurd

関連する問題