Railcard オブジェクトの end * to 1 の参照を持つ CustomerRailcard オブジェクトを更新しようとしています。問題は、Railcard オブジェクトを削除できないことです。CustomerRailcard オブジェクトの参照を別の RailcardObject に変更するだけで済みます。私はこのようにやっています:
アップデート:
// Updating properties in existing CustomerRailcard.
// This won't update navigation properties (Railcard).
context.ObjectStateManager.ChangeObjectState(existingCustomerRailcard, EntityState.Modified);
context.ApplyCurrentValues("CustomerRailcardsDbo", newCustomerRailcard);
// Now I'm trying to update navigation property of CustomerRailcard to the Railcard
// by removing the reference from old Railcard to CustomerRailcard.
// Railcard can have references to many CustomerRailcards.
var oldRailcard = railcardRepository.FindById(customerDetails.CustomerRailcards.FirstOrDefault(r => r.Id == railcard.Id).Railcard.Id);
var customerRailcardToRemove = oldRailcard.CustomerRailcards.FirstOrDefault(cr => cr.Id == railcard.Id);
// Removing reference to CustomerRailcard from Railcard
oldRailcard.CustomerRailcards.Remove(customerRailcardToRemove);
// Now I'm getting new Railcard I want to have referenced by CustomerRailcard
// and I'm changing its reference tu CustomerRailcard
var newRailcard = railcardRepository.FindById(railcard.Railcard.Id);
// Adding reference to CustomerRailcard
newRailcardDboReference.CustomerRailcards.Add(railcard);
これを実行すると、このエラーが発生します
「CR_RL_FK」AssociationSet からの関係は「削除済み」状態です。多重度の制約がある場合、対応する「CustomerRailcardDbo」も「削除済み」状態でなければなりません。
この種の関係を更新するには、他にどのような方法がありますか?