Я делаю CRUD стран и городов и пытаюсь добавить уникальный индекс в City.Name.
Я уже сделал это с Country.Name, и я хотел бы знать, возможно ли сделать это с городом, чтобы 2 города в 2 странах могли иметь одно и то же имя, но в 1 стране не может быть городов с повторяющимися названиями.
Класс страны
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<City> Cities { get; set; }
Городской класс
public int Id { get; set; }
[Required]
public string Name { get; set; }
Когда я создаю город, я использую эту ViewModel
Модель CityView
public int CountryId { get; set; }
public int CityId { get; set; }
[Required]
public string Name { get; set; }
При создании модели
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Country>().HasIndex(c => c.Name).IsUnique();
base.OnModelCreating(modelBuilder);
}
Пример
Допустим, у меня есть 2 страны Канада и Австралия, а внутри Канады у меня есть 1 город по имени Сидней.
Если я попытаюсь создать или отредактировать другую страну, чтобы она называлась Канада или Австралия, я хочу, чтобы она выдавала ошибку.
Если я попытаюсь создать или отредактировать другой город, чтобы он назывался Сидней, если город создан в стране Австралия, он не должен выдавать ошибку, но если он создан в стране Канада, он должен выдавать ошибку.
Я надеюсь, что это помогает.