Сопоставить одно свойство со столбцами в двух таблицах с помощью сопоставления NHibernate Conformist

У меня есть следующий (упрощенный) домен:

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 Таблица. Я использую новое конформистское отображение, и оно отлично работает! У меня не было никаких проблем.

Тем не менее, у меня есть новое требование: мне нужно создать уникальное ограничение в базе данных, которое гарантирует, что нет двух PersonUserможет иметь то же самое TenantId, DomainName, а также Username сочетание. Это ограничение невозможно, если только Users_PersonUsers стол также имеет TenantId колонка. Я не уверен, как лучше подойти к этому.

Я надеялся, что смогу попросить NHibernate сопоставить свойство двум столбцам - по одному в каждой таблице - но, похоже, нет способа сделать это. Я что-то пропустил? Это возможно? Есть ли способ лучше?

0 ответов