我有以下情况:一个案件与约会有一个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
}
}
亲切的问候, 伴侣