以一对一的关系更新图表

时间:2014-09-02 19:56:55

标签: c# entity-framework graphdiff

我有一个课程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.

任何提示?

0 个答案:

没有答案
相关问题