我正在寻找一种方法来对我的 EF Code First 数据库表执行一些更智能的唯一约束。
我有两个模型在玩;一个环境和一个租户。
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 属性。
我想要实现的是每个租户的设置名称必须是唯一的。例如,您可以在“Tenant01”下有一个名为“SettingA”的设置,在“Tenant02”下有一个名为“SettingA”的设置(每个都是两个单独的实体,在表中具有自己的 Id,因此可以具有不同的值),并且这个合法,但不允许将另一个设置名称“SettingA”用于已存在的租户。
我可以看到很多方法来通过数据库初始化和添加时检查等来强制执行直接唯一性,但在“条件唯一性”方面没有任何内容。