Указание значения дискриминатора с помощью Fluent NHibernate - PullRequest
0 голосов
/ 23 октября 2011

Значением по умолчанию для DiscriminatorValue является полное имя Subclass.

Я бы хотел сопоставить это с числом, например, значением перечисления или одним символом. Я попытался указать его в отображении с помощью DiscriminatorValue, однако это не имеет никакого влияния, и он придерживается имени подкласса.

Пример:

public class MovieMapping : SubclassMap<Movie>
{
    public MovieMapping()
    {
        Map(m => m.Director);
        HasMany(m => m.Actors)
            .KeyColumn("MovieId")
            .AsList(l => l.Column("ActorIndex"));
        DiscriminatorValue("'M'");
    }
}

Я бы ожидал увидеть M в столбце для Discriminator, но вместо этого он предлагает полное имя подкласса.

Кто-нибудь еще мог сделать это с помощью Fluent NHibernate?

1 Ответ

2 голосов
/ 30 октября 2011

Я использовал DiscriminateSubClassesOnColumn в родительском классе.Однако неуниверсальная версия по умолчанию является строкой, несмотря на то, что подклассы указывают, что они хотят целочисленные значения, и, следовательно, строка имени типа сохранялась.

Я нашел универсальную версию DiscriminateSubClassesOnColumn, и как только вы ее используете, она работаетштраф и забирает целочисленные значения для столбца дискриминатора.

DiscriminateSubClassesOnColumn ("ProductType", (int) 0);

Я думаю, это могло бы помочь, если бы механизм отображения выдавал ошибку междутот факт, что у родительского класса есть сопоставление строк, а дочерний класс пытается отправить значение типа int, но несоответствие просто игнорируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...