我正在与两个实体县和患者合作,这些实体有一对多关系。
<div id="content">
<div>
<img src="//placehold.it/300x800" class="images" alt="Image of an actor from the musical Phantom of the Opera"> </div>
<div>
<img src="//placehold.it/300x800" class="images" alt="Image of an actor from the musical Lion King">
</div>
<div>
<img src="//placehold.it/300x800" class="images" alt="Image of an actor from the musical Wicked"></div>
</div>
异常消息是:
违反了多重性约束。角色'Patient_County_Target' 关系'ArielOperations.Domain.Concrete.Patient_County'有 多重性1或0..1。
County实体上的调试器显示:
有人能解释这里发生了什么吗?我在这里和其他地方看过几个条目,似乎都没有。
谢谢。
答案 0 :(得分:0)
我能够解决我的问题。关键似乎是避免在县内添加患者时尝试创建新的县记录。为此,我没有将County实例传递给CreatePatient方法。新患者仅包含目标县的CountyId。
Patient newPatient = new Patient
{
PatientLastName = "Doe",
PatientFirstName = "Jane",
CountyName = "Denton",
CountyId = 4
};
我们现在可以将此newPatient实例传递给CreatePatient方法。
public Patient CreatePatient(Patient patient)
{
string errorMessage = String.Empty;
Patient patientReturned = null;
County county = null;
try
{
using (AppContext ctx = new AppContext())
{
// ONLY Pre-existing counties are permitted
county = ctx.Counties.Where(c => c.CountyName == patient.CountyName).SingleOrDefault<County>();
ctx.Patients.Add(patient);
ctx.SaveChanges();
patientReturned = patient;
}
} // end try
catch (Exception err)
{
errorMessage = err.Message;
} // end catch (Exception err)
return patientReturned;
} // end public Patient CreatePatient(Patient patient)
这似乎有效,甚至可以通过外键将患者连接到县记录。看来EF在这里做了一些事情来达到理想的目的。