我第一次使用实体框架的第一个代码方法,我已经设法创建所有实体并从中成功生成数据库。我在这里看了几个问题,我注意到如果属性发生了变化,没有人编写更新外键的代码。
这是我的一个实体的一些代码:
[Required]
[ForeignKey("CompanyId")]
private int CompanyId;
public virtual Company Company
{
get
{
return Company;
}
set
{
Company = value;
CompanyId = value.Id; //is this needed?
}
}
所以我的问题是:我是否需要在更改公司属性时手动设置CompanyId,就像我在上面的代码中一样?或者这是自动发生的吗?
希望问题很清楚。提前致谢 萨姆
答案 0 :(得分:1)
不需要明确设置外键属性,并且会在调用SaveChanges()
时自动完成。
但是,如果出于某种原因需要在调用SaveChanges()
之前更新外键属性,则可能需要手动执行。
此外,在设置新的/已分离的Company
(通常尚未设置Id
时)时,CompanyId
属性将使用新生成的内容进行更新-id也可以调用SaveChanges()
。
有关详细信息,请参阅EF Relationships and Navigation Properties。