Игнорируя ваши денормализованные ссылки на несколько объектов страны на данный момент, вы могли бы написать следующее:
public class Country
{
[Key]
public int CountryID { get; set; }
[MaxLength(20)]
public string Name { get; set; }
}
public class Person
{
public int PersonID { get; set; }
[MaxLength(20)]
public string Name { get; set; }
public Country Country1 { get; set; }
public Country Country2 { get; set; }
public Country Country3 { get; set; }
}
Конечно, вам также понадобится DbContext:
public class Context : DbContext
{
public DbSet<Person> People { get; set; }
public DbSet<Country> Countries { get; set; }
public Context(string dbName)
:base (dbName)
{
}
}
Это приведет к тому, что схемы таблиц будут отражать ваше исходное требование.
Обратите внимание, что если вы объявите классы следующим образом:
public class Country
{
[Key]
public int CountryID { get; set; }
[MaxLength(20)]
public string Name { get; set; }
public ICollection<Person> People { get; set; }
}
public class Person
{
public int PersonID { get; set; }
[MaxLength(20)]
public string Name { get; set; }
public ICollection<Country> Countries { get; set; }
}
В этом случае EF создаст таблицу соединения «многие ко многим», которая позволит вам связать любое количество стран с любым количеством людей:
CREATE TABLE [CountryPersons]
(
[CountryCountryID] int NOT NULL,
[PersonPersonID] int NOT NULL
);
Обратите внимание, что EF определяет отношение многих ко многим из-за сбора людей в странах и сбора стран в людях.
НТН.