我有一个课程Ricevuta,其中包含一系列VoceRicevuta:
public partial class Ricevuta : GestPreBaseBusinessObject
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public long Id { get; set; }
...
[InverseProperty("Ricevuta")]
public virtual ObservableListSource<VoceRicevuta> Voci { get; set; }
}
VoceRicevuta包含对不同类的可选引用,我们只考虑Prestazione类的引用:
public partial class VoceRicevuta
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public long Id { get; set; }
public long IdRicevuta { get; set; }
....
public virtual Prestazione Prestazione { get; set; }
[ForeignKey("IdRicevuta")]
public virtual Ricevuta Ricevuta { get; set; }
}
好的,现在的问题如下:我创建了一个Prestazione实例(让它称之为PreInst)并将其保存到数据库中。我从该DbContext实例中分离PreInst。 然后,我将PreInst传递给另一种形式(另一种DbContext - 我必须这样做),创建一个Ricevuta,一个VoceRicevuta(添加到刚创建的Ricevuta)并将PreInst分配给VoceRicevuta Prestazione属性。我还对PreInst做了一些修改。 现在我想将新的Ricevuta,新的VoceRicevuta,它与PreInst的关系以及对PreInst的更改保存到数据库。 我运行以下内容:
db.UpdateGraph(Ricevuta, map =>
map.OwnedCollection(ric => ric.Voci,
with => with
.OwnedEntity(voce => voce.Prestazione)
));
但我得到错误:
&#34;违反PRIMARY KEY约束&#39; PK_dbo.Prestazioni&#39;。无法在对象&#39; dbo.Prestazioni&#39;中插入重复的密钥。重复密钥的重复:(12115)&#34;
我无法理解为什么!如果图表的任何部分已经存在于Db中并且表现得很频繁,那么图形差异目标是否打算?
我尝试在运行上面的代码并保存之前将PreInst附加到DbContext。现在抛出的错误是:
Multiplicity constraint violated. The role 'Prestazione_VoceRicevuta_Source' of the relationship 'Gestione_Prestazioni.Prestazione_VoceRicevuta' has multiplicity 1 or 0..1.
任何提示?