医生有一个学位,一个学位有很多医生, 好吧,当我尝试添加新的医生ef 6.0(DbContext)时,将选定的度数作为新的记录在度读表中插入 我不知道为什么?
插入方法:
public bool Insert<T>(T entity) where T : class
{
bool result = false;
try
{
Context.Set<T>().Add(entity);
result = Context.SaveChanges() > 0;
}
catch (Exception exp)
{
result = false;
fnLogExceptions(exp);
}
return result;
}
插入部分:
private void btnSave_Click(object sender, EventArgs e)
{
var dr = new DB.Doctors();
...
dr.Degrees = dropDownList_Degree.SelectedItem as DB.Degrees;
...
using (var ctx = new Context())
{
opState = ctx.Insert<DB.Doctors>(dr);
}
...
}
成功插入新医生,但也插入了所选学位的新副本
提前致谢
答案 0 :(得分:0)
您尝试分配的学位不是来自数据库,而是来自dropodown列表。所以EF认为它是新的,因此插入一个新的学位。
您需要从数据库中检索现有学位。
var dr = new DB.Doctors();
int selectedDegreeID = (int)dropDownList_Degree.SelectedItem.Value;
using (var ctx = new Context())
{
dr.Degree = ctx.Degrees.Find(selectedDegreeID); // Retrieval and assignment.
opState = ctx.Insert<DB.Doctors>(dr);
}