C#代码优先:属性更改时外键是否自动更新?

时间:2015-02-09 15:02:04

标签: c# entity-framework ef-code-first

我第一次使用实体框架的第一个代码方法,我已经设法创建所有实体并从中成功生成数据库。我在这里看了几个问题,我注意到如果属性发生了变化,没有人编写更新外键的代码。

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

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

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

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

希望问题很清楚。提前致谢 萨姆

1 个答案:

答案 0 :(得分:1)

不需要明确设置外键属性,并且会在调用SaveChanges()时自动完成。

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

此外,在设置新的/已分离的Company(通常尚未设置Id时)时,CompanyId属性将使用新生成的内容进行更新-id也可以调用SaveChanges()

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