繁体   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