我有以下(简化)域名:
public abstract class User
{
public virtual long UserId { get; set; }
public virtual long TenantId { get; set; }
...
}
public class PersonUser : User
{
public virtual string DomainName { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
}
public class ClientUser : User
{
...
}
我正在使用每类表映射策略,以便User
数据存储在Users
表中,PersonUser
数据存储在Users_PersonUsers
表中,ClientUser
数据存储在Users_ClientUsers
表中。我正在使用新的Conformist映射,它工作得很好!我没有遇到任何问题。
但是,我有一个新要求:我需要在数据库中创建一个唯一约束,以确保没有两个PersonUser
可以具有相同的TenantId
,DomainName
和{ {1}}组合。除非Username
表还具有Users_PersonUsers
列,否则无法使用此约束。我不确定如何最好地解决这个问题。
我希望我能告诉NHibernate将属性映射到两个列 - 每个表中有一个 - 但似乎没有办法做到这一点。我错过了什么吗?这可能吗?还有更好的方法吗?