У меня есть следующий класс
public Building()
{
public int Id{Get; Set;};
public ICollection Bars{Get; Set;};
}
public Room()
{
public int Id{Get; Set;};
public int BuildingId{Get; Set;};
public Building Building{Get; Set;};
public string Name{Get; Set;);
}
Я бы хотел, чтобы каждая комната в здании имела уникальное имя.Но я не могу сделать свойство Name уникальным, так как разные здания могут иметь одно и то же имя комнаты
Room Table
Id BuildingId Name
1 1 Kitchen
2 2 Kitchen //Should be allowed as different building
3 1 Kitchen //Should not be allowed
Единственное решение, которое я могу придумать, - это создание составного ключа между BuildingId и Name.
modelBuilder.Entity<Room>().HasKey(r=> new {r.BuildingId, r.Name});
Выбор приложений будет происходить много раз в приложении, и было бы намного проще сохранить ключ как простое целое число.Есть ли способ сделать этот уникальный составной столбец, не делая его ключевым?
Я считаю, что мне нужно что-то сделать с индексами, но я могу найти рабочий пример того, что я после.