实体框架 - 将父对象分配给对象

时间:2017-02-06 14:55:45

标签: c# entity-framework

假设我们有2个表:

ID
Name
Nationality_ID (FK)

国籍

ID
Name

使用EF,在什么情况下使用下面的每个选项为一个人添加国籍是有道理和正确的?他们之间有什么不同?什么是更快,更慢?

  • 选项1:

    TheNationality.persons.Add(ThePerson);

  • 选项2:

    ThePerson.nationality_id = TheNationality.id;

  • 选项3:

    ThePerson.nationality = TheNationality;

2 个答案:

答案 0 :(得分:1)

如果Person是您的聚合的根和应用程序的焦点,那么很可能选项2和选项3是有意义的。其中,如果您需要根据您所在国家/地区的信息执行其他域逻辑,则选项3更有用。如果您的申请重点是国籍,选项1是有意义的。

这些方法都不是互斥的。如果从两个透视图查询和操作对象,则可以使用选项1/3或1/2。

答案 1 :(得分:0)

结果插入/更新在所有情况下都是相同的。除非由于某些其他原因需要获取TheNationality实体,否则您可以跳过读取以获取该实体,并且如果您拥有它,则只需分配ID:

ThePerson.nationality_id = someNationalityIDVariable;