0

テクノロジ: ASP.NET MVC3、Entity Framework 4、多層アプリ

0 対 1 の関係にある 2 つのテーブルがあります。duplicata には 0 個または 1 個の pagamento を含めることができ、pagamento には 1 個の duplicata のみを含めることができます。リンク

新しい Pagameto エンティティを作成し、1 つの Dupliacata に追加すると、Duplicata の行がデータベースに保存され、次のエラーが発生します。

 A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.

次の画像は、1 つのパガメントを持つエンティティ Duplicata を示しています。 リンク

そして、コードはエラーを取得します:

            context.Duplicata.Attach(duplicata);
            context.ObjectStateManager.ChangeObjectState(duplicata, EntityState.Modified);

            context.SaveChanges(); 
4

1 に答える 1

0

はい、しかし、アタッチのポルポスは、切り離されたエンティティのコンテキストに入るために要素を重複する bu に追加していません。新しい複製を作成する場合は、新しい複製を作成するだけです。のように

// just for testing NO magic numbers!
var pagamentoId = 1;
var duplicata = new Duplicata();
duplicata.PAGAMENTO_ID = pagamentoId;
duplicata.VALOR = 1000;
duplicata.CLIENTE_ID = 23;

// add the rest of properties


// then...
context.AddObject("Duplicatas", duplicata);
context.SaveChanges();

注: addobject で "Duplicatas" を使用したのは、それが Duplicata セットの名前であると想定したためです (set は、Duplicata のコレクションであり、EDMX ファイルでその名前を設定することを意味します)。

pagamento_id を必要な値に設定すると、両方のエンティティ間の関係が自動的に生成されます

于 2013-08-23T14:22:24.410 に答える