0

技术:ASP.NET MVC3、Entity Framework 4、多层应用

我有两个 0 对 1 关系的表。一个副本可以有 0 个或一个 pagamento,而 pagamento 只有一个副本。关联

Duplicata 的行保存在我的数据库中,当我创建一个新的 Pagameto 实体并添加到一个 Dupliacata 时会出现此错误:

 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.

下面的图像显示了带有一个 Pagamento 的实体 Duplicata。 关联

并且带有错误的代码:

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

            context.SaveChanges(); 
4

1 回答 1

0

是的,但是 attach 的目的不是将元素添加到 duplicata 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 回答