Question: Let's suppose we have 2 tables:

**Person**

```
ID
Name
Nationality_ID (FK)

```

**Nationality**

```
ID
Name

```

With EF, in what contexts does it make sense and is correct to use each of the options below to add a nationality to a person? What is the different between them? What is the faster and the slower?

* Option 1:

`TheNationality.persons.Add(ThePerson);`
* Option 2:

`ThePerson.nationality_id = TheNationality.id;`
* Option 3:

`ThePerson.nationality = TheNationality;`

Answer: 
If `Person` is the root of your aggregate and the focus of your application, most likely option 2 and option 3 make sense. Of those, option 3 is the more useful if you need to do additional domain logic based upon information in your nationality. Option 1 makes sense if the focus of your application is about nationality.

None of these methods is mutually exclusive. If you query and manipulate the objects from both perspectives, you can use options 1/3 or 1/2.
The resulting insert/update would be the same in all cases. Unless it is necessary to get `TheNationality` entity for some other reason, you could skip the read to obtain that and just assign the ID if you have it: 

```
ThePerson.nationality_id = someNationalityIDVariable;

```