[英]Why don't I have to update a parent object when updating both the parent and child entity in EF code first
我有兩個實體(student和studentImage)。 在更新學生信息時,我得到了學生並在其中修改數據。 如果我同時修改了Student和StudentImage的數據,為什么在我更新存儲庫時只需要運行下面顯示的第二行? 並且它同時更新了student和studentImage行。 您可能會認為我必須同時更新兩個或至少一個學生,但是如果我嘗試同時運行這兩行代碼,則會引發異常……似乎當我更新student.StudentImage時,它會向上傳播給學生嗎?
public void Update(Student student)
{
//context.Entry(student).State = EntityState.Modified;
context.Entry(student.StudentImage).State = EntityState.Modified;
}
public void Save()
{
context.SaveChanges();
}
這是我的student和studentImageEntity實體顯示。
public class StudentImage
{
[Key, ForeignKey("Student")]
public int StudentId { get; set; }
public byte[] Image { get; set; }
public byte[] ImageThumbnail { get; set; }
public string ContentType { get; set; }
public virtual Student Student { get; set; } // one-to-one
}
public class Student
{
public int StudentId { get; set; }
public virtual StudentImage StudentImage { get; set; } //one-to-one
[Required]
public DbGeography LocationPoints { get; set; } //37.1234, -122.2342
[Required]
public string Location { get; set; } //ex. San Francisco, CA, USA
[MaxLength(250)]
public string Education { get; set; } //State Univesity
public string Work { get; set; } // Taco Bell, Starbucks
public StudentStatus Status { get; set; }
}
實體框架在確定保存時需要更新哪些記錄方面做得很好。 它還可以自動處理變更跟蹤-由於實體使用代理的方式,您甚至無需將實體標記為已修改。
如果您保存實體,它將查看該實體所依賴的所有關聯,並檢查這些關聯是否有更改。 在確定需要更新/添加哪些記錄后,它將生成查詢,以滿足約束條件的方式更新這些記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.