既存のエンティティを更新しようとしています
private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item)
{
itemFromDb.UpdatedDate = DateTime.Now;
itemFromDb.Description = item.Description;
//references
itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1;
itemFromDb.MamConfigurationToGroups_V1 = item.MamConfigurationToGroups_V1;
}
Ui-Item を Ef-item に割り当てると、次のエラーが発生します。
itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1;
は
EntityCollection
すでに初期化されています。このInitializeRelatedCollection
メソッドはEntityCollection
、オブジェクト グラフの逆シリアル化中に new を初期化するためにのみ呼び出す必要があります。
アップデート:
私は@Gertの方法を試しました:
private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item)
{
itemFromDb.UpdatedDate = DateTime.Now;
itemFromDb.Description = item.Description;
itemFromDb.StatusId = item.StatusId;
itemFromDb.Name = item.Name;
itemFromDb.NumericTraffic = item.NumericTraffic;
itemFromDb.PercentageTraffic = item.PercentageTraffic;
itemFromDb.Type = item.NumericTraffic;
itemFromDb.MamConfigurationToBrowser_V1.Clear();
for (int i = 0; i < item.MamConfigurationToBrowser_V1.Count; i++)
{
var elementToAdd = item.MamConfigurationToBrowser_V1.ElementAt(i);
elementToAdd.Browser = mMaMDBEntities.Browsers.Single(browserItem => browserItem.BrowserID == elementToAdd.BrowserID);
elementToAdd.MamConfiguration_V1 = itemFromDb;
itemFromDb.MamConfigurationToBrowser_V1.Add(elementToAdd);
}
次のエラーが表示されます。
clear
およびadd
コマンドを追加する場合のみ
操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。