[英]Entity framework update foreign key to null without query and without id of the related entity
使用EF 6.1,我想將外鍵設置為null(破壞兩個實體之間的關系),而不先查詢任何一個對象。 最好,我也不想提供相關實體的ID(因為這需要將其添加到我的HTML中)。
我當前的代碼不會執行不必要的查詢,但是需要相關實體的ID:
public void RemoveCurrentTeacherOfGroup(int groupId, int teacherId)
{
var group = new Group { Id = groupId };
var teacher = new Teacher { Id = teacherId };
group.Teacher = teacher;
_dataContext.Groups.Attach(group);
_dataContext.Teachers.Attach(teacher);
group.Teacher = null;
_dataContext.SaveChanges();
}
但是,我不需要教師ID,groupId是足夠的信息。
更多信息:數據庫是代碼優先生成的。 實體的定義如下:
public class Teacher
{
public int Id { get; set; }
..
public virtual List<Group> Groups { get; set; }
}
public class Group
{
public int Id { get; set; }
..
public virtual Teacher Teacher { get; set; }
}
有沒有辦法在沒有TeacherId的情況下將外鍵設置為null?
另外,對於使代碼不那么冗長的答案的許多贊譽,我覺得對於將外鍵設置為null這樣簡單的事情,這些行太多了。
如果將外鍵添加到類中,則生活通常會更輕松:
public class Group
{
public int Id { get; set; }
public int? TeacherId { get; set; }
public virtual Teacher Teacher { get; set; }
}
然后您的方法是:
public void RemoveCurrentTeacherOfGroup(int groupId)
{
var group = dataContext.Groups.Find(groupId);
if(group == null)
return;
group.TeacherId = null;
_dataContext.SaveChanges();
}
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.