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。
我第一次使用 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。