私は1から0または1の関係を表す次のようなモデルを持っています。1から0または1のエンドポイントの置き換え関係
public class Parent
{
public int ParentId { get; set; }
public Child Child { get; set; }
}
public class Child
{
[Key, ForeignKey("Parent")]
public int ChildId { get; set; }
public Parent Parent { get; set; }
}
私はParentの子メンバーを置き換える必要があります。新しいインスタンスが外部ソースから受信されています。
はしかし、子供を交換し、データベースに保存しようとした後:プロパティ 値(複数可):
parent.Child = <new instance>
context.Entry(parent).State = EntityState.Modified;
私は、参照整合性制約違反が発生しました」エラーに
を受け取りますリレーションシップの一方の端にある 'Parent.ParentId'の「 」は、もう一方の端の「Child.ChildId」のプロパティ値と一致しません。
エンドポイントをどのように置き換えることができますか?どうすれば削除できますか?ありがとう
私はあなたがそのようなインスタンスを置き換えることができます疑う、私はSQLに削除して、文を挿入することを変換EFを想像することはできません、プロパティを更新する必要があります。 – pjobs
子を置き換える代わりに、新しい子に合わせてプロパティを変更することもできます。最終結果はまったく同じですが、それほど複雑ではありません。 –
@GertArnoldそれはうまくいくが、私は2つの理由でそれを好きではない。 1)すべての特性をコピーするためのボイラープレートコードの必要性。開発者は、新しいプロパティを追加するときにこのアップデートを忘れる可能性があります。 2)モデルのユーザーに使用パターンを強制し、ある意味ではデータベースの周りにある抽象レイヤーを突破します。 – denver