Я ищу способ выполнить несколько более интеллектуальные уникальные ограничения в таблице EF Code First database.Уникальный индекс для внешнего ключа
У меня есть две модели в игре; Установка и арендатор.
public class Setting
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public int TenantId { get; set; }
}
public class Tenant
{
///
public int Id { get; set; }
public virtual List<Setting> Settings { get; set; }
///
}
Как вы можете догадаться, установка связана с его Арендатором свойством TenantId, который действует в качестве внешнего ключа и соответствовать свойству Id Арендатора.
То, что я хочу достичь, это сказать, что имя параметра должно быть уникальным для каждого арендатора. Например, вы можете иметь настройку с именем «SettingA» в разделе «Tenant01» и «SettingA» в разделе «Tenant02» (каждый из которых представляет собой два отдельных объекта с собственными идентификаторами в таблице и может иметь разные значения), и это быть законным, но не допускать другого параметра «SettingA» для «Арендатора», где он уже существует.
Я могу видеть множество способов просто обеспечить прямую уникальность через такие, как инициализация базы данных и проверка при добавлении и т. Д., Но ничего не «условная уникальность».
, если я хорошо понимаю, что это выглядит как ограничение уникальности на пару [Setting.Name, Настройка. TenantId]? –
Я почти на 100% уверен, что нет никакой структуры для этого встроенного устройства, однако вы можете создать свой собственный атрибут для его обработки. Это было бы довольно прямолинейно. –