NHibernate явное отображение беглого столбца - PullRequest
2 голосов
/ 15 декабря 2009

У меня есть набор отображений беглых объектов, который выглядит следующим образом:

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Map(x => x.Id);
        Map(x => x.Status);
    }
}

public class SpecialUserMap : SubClassMap<SpecialUser>
{
    public SpecialUserMap()
    {
        Map(x => x.Property);
    }
}

public class DirectoryMap : ClassMap<Directory>
{
    public DirectoryMap
    {
        Map(x => x.Id);
        HasMany(x => x.SpecialUsers).Where("Status = 0");
    }
}

Пользователь - это таблица соединений, к которой присоединяется SpecialUser для получения таких вещей, как статус. Однако, когда я пытаюсь сослаться на SpecialUser в коллекции SpecialUsers каталога, я получаю сообщение об ошибке «Неопределенный столбец« Status »», так как в сгенерированном SQL NHibernate пытается извлечь столбец Status из таблицы SpecialUser, а не из таблицы User , Есть ли способ явно указать NHibernate, какую таблицу получить в столбце Status в DirectoryMapping?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2009

Это сопоставление выглядит правильно для сопоставления таблица на подкласс * , предполагая, что SpecialUser расширяет User. Я предполагаю, что это ошибка.

0 голосов
/ 15 декабря 2009

Свойство Status пользователя / SpecialUser должно отображаться на один столбец в базе данных. Вы не можете получить его иногда от пользователя, а иногда от SpecialUser.

В качестве обходного пути вы можете добавить свойство SpecialUserStatus в SpecialUser и затем легко запросить его.

...