2012-03-07 7 views
0

の主キーはLongitudeとなり、Latitudedoubleとなります。Entity Frameworkを使用して、エンティティオブジェクトから他のエンティティへの参照を削除するにはどうすればよいですか?

別のエンティティオブジェクトから、Locationsのエンティティオブジェクトへの参照を削除したいが、nullへの参照を設定しようとするたびにOptimisticConcurrencyExceptionが返される。

using (MyModelContainer context = new MyModelContainer()) 
{ 
    Note note = context.Notes.Single(n => n.NID == NoteUpdate.NID); 
    note.LocationReference.Load(); 
    note.LocationReference = null; 
    context.saveChanges(); 
} 

しかし、動作しません。同じことがnote.LocationReference.Value = nullです。

nullまたはそのデフォルト値への参照を設定するにはどうすればよいですか?

+0

メモと場所のモデルを表示できますか? –

+0

'Location'と' Note'は0..1から多くの関係にあります。 Locationは主キーとしてLongitudeとLatitudeをdoubleとする。 'Note'はTitle、Content、IDを持ちます。 – flyinggecko

+0

カスケード削除/更新が設定されていますか? – RichardW1001

答えて

0

ここでは、メモ行のロケーション列がnullに設定されるようにdbを更新することを目的としているため、切り離しは機能しません。私は上記のコードでnote.LocationReference = null;note.Location = null;に置き換えてください。

+0

いいえ、申し訳ありませんが、それが私が試した最初のことでした。その場合は、参照を削除するのではなく、参照を削除します。そして、あなたが正しいです、私はデータベースを更新したいです。 – flyinggecko

0

参照を削除しようとしましたか?私はこれが親の行を削除すると信じていますが、ノートに結び付けられたオブジェクトを渡す場合にのみ参照を削除するかどうか調べるのは興味があります。

context.DeleteObject(note.LocationReference); 

通常、オプティミスティック同時実行エラーは、最後のオブジェクトをロードされたため、値が変更されたことを意味するが、それは問題ではありませんように聞こえます。しかし、検証するために、コードを実行する間にこれを修正する人はいませんか?

最後に、状態を設定しようとしましたか?ご注意クラスで

context.Entry(note).State = EntityState.Added 
0

、追加:

public int? LocationReferenceId {get; set;} 

を参照を削除するには実行します。その後、

Note.LocationReferenceId = null; 

とバック私は偵察デシベル

に注意オブジェクトを保存そのトリックを行う必要があります。

+0

私はこれを試しましたが、何も変わりません – flyinggecko

+0

あなたのノートクラスの完全なコードをコピーできますか? – Drauka