1

EF を使用して期待どおりにすべてのデータをロードするアプリケーションがありますが、保存に関してはまったく機能しません。

コンボボックスの値を使用してデータベースの 1 つのフィールドを変更するだけで、簡単なことから始めました。値が変更されると実行されます

this.t.Incident.AssignedTeamID = (int)this.cbTeam.SelectedValue;

EntityStateまた、これによりtoが変更されModified、値が期待どおりであることも確認しました。それにもかかわらず、呼び出し

hdb.SaveChanges();

データベースには何も保存しません。おそらく私が見逃している単純なものであることはわかっていますが、それが何であるかはまったくわかりません。

更新:hdb.context.Attach(this.t.Incident); SaveChanges を使用する前に 追加すると、 InvalidOperationExceptionIEntityChangeTracker の複数のインスタンスからエンティティ オブジェクトを参照できません。」というメッセージが表示されます。

違いがある場合、これはデスクトップ アプリケーションであり、Web アプリケーションではありません

4

2 に答える 2

2

ほとんどの場合、Web アプリで作業しているため、切断されたオブジェクト コンテキストに問題があります。すべての ORM で、アタッチ プロセスを経てエンティティを更新する必要があります。SaveChanges は、要求/応答の両側で機能することはありません。

于 2011-06-08T01:03:00.850 に答える
0

ここに投稿してくださった皆様、ありがとうございました。これらの詳細を読んだ後の答えは非常に簡単でした。

ダミアンが元の質問にコメントしたように、私がする必要があるのは、それがすべて同じクラスからロードされていることを確認することでした。私は現在、実際には考えずに、必要なときにいつでもDBのプライベートインスタンスを作成しました。これは問題ありませんでした。期待どおりにデータが読み込まれましたが、データベースの約3つの異なるインスタンスが異なるクラスを介して読み込まれることを意味しました。

基本的に、データベースの別のインスタンスを使用して、別のクラスのオブジェクトを保存しようとしていました。saveメソッドを作成元のクラスに戻すと(おそらく常にそうであるはずだったように)、問題が解決しました。

于 2011-06-08T09:57:51.303 に答える