Здесь
.HasForeignKey<Person>(a => a.PersonId)
вы говорите EF, что Person.PersonId
будет FK (внешний ключ) для Address
, то есть Person
зависит и ссылается на принципала Address
.
Это должно быть наоборот:
.HasForeignKey<Address>(a => a.PersonId)
Таким образом, Person
(основной) будет иметь 0,1 Address
, а Address
(зависимый) будетиметь 1 Person
(потому что PersionId
это и PK, и FK).
Это называется Ассоциация общего первичного ключа и является стандартным (и используемым по умолчанию) способом моделирования отношения один к нулю или одного в EF Core.
Для получения дополнительной информации см. Отношения .