C# Code First:当 属性 改变时,外键是否自动更新?

C# Code First: Does the foreign key automatically update when property is changed?

我第一次使用 entity framework 的第一种代码方法,我已经成功地创建了所有实体并成功地从它们生成了一个数据库。我在这里查看了几个问题,我注意到没有人编写过在 属性 发生更改时更新外键的代码。

这是我的一个实体的一些代码:

    [Required]
    [ForeignKey("CompanyId")]
    private int CompanyId;

    public virtual Company Company
    {
        get
        {
            return Company;
        }
        set
        {
            Company = value;
            CompanyId = value.Id; //is this needed?
        }
    }

所以我的问题是:当公司 属性 更改时,我是否需要手动设置 CompanyId,就像我在上面的代码中所做的那样?还是自动发生?

希望问题够清楚。提前致谢 山姆

不需要显式设置外键 属性,将在调用 SaveChanges() 时自动完成。

但是,如果出于某种原因您需要在调用 SaveChanges() 之前更新外键 属性,您可能需要手动进行。

此外,当设置 new/detached Company(通常还没有设置 Id)时,CompanyId 属性 将是在调用 SaveChanges() 时也更新了新生成的 ID。

有关详细信息,请参阅 EF Relationships and Navigation Properties