EF 6:如何以1到0..1的关系添加记录

时间:2016-08-15 13:51:52

标签: entity-framework foreign-keys

我有以下情况:一个案件与约会有一个1到0..1的关系(我总是需要一个案例来处理。这个案子不需要预约。但是每个约会都需要一个case。)实现如下:

public class Case
{
    [Key]
    public long CaseId { get; set; }
    public virtual Appointment Appointment { get; set; }
    // ... and several other properties.
}

public class Appointment
{
    [Key]
    public long AppointmentId { get; set; }
    public virtual Case Case { get; set; }
    // ... and several other properties.
}

// in OnModelCreating
modelBuilder.Entity<Appointment>().HasRequired(a => a.Case).WithOptional(c => c.Appointment);

到目前为止,非常好:如果我创建约会并且(因为我必须这样做)引用的案例,一切正常。

但是如果我创建我的案例并且稍后我想创建一个关联的约会,我总是得到例外:&#34;违反了多重性约束。角色&#39; Appointment_Case_Source&#39;关系&#39; Appointment_Case&#39;具有多重性1或0..1&#34;

我尝试将约会分配到案例,反之亦然。这里出了什么问题?

这就是我尝试这样做的方式:

private void CreateNewAppointment(Case case)
{
    Appointment a = MyRepository<Appointment>.Create();
    a.Case = case;  // and some other properties...
    MyRepository<Appointment>.Update(a);
}

MyRepository是一个通用的存储库类,具有以下方法:

public T Create()
{
    return MyContext.Set<T>().Create(); // with MyContext : DbContext
}

public void Update (T record)
{
    if (MyContext.GetEntityState(record) == EntityState.Detached)
    {
        if (record.Id == 0) { MyContext.Set<T>().Add(record); } // here I get this Multiplicity constraint violation...
        // several other things in else
    }
}

亲切的问候, 伴侣

0 个答案:

没有答案