簡體   English   中英

為什么先更新EF代碼中的父實體和子實體時,為什么不必更新父對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM