Перечисления запросов хранятся в виде строки с использованием nHibernate Linq Provider - PullRequest
2 голосов
/ 17 августа 2011

В настоящее время Enum хранится в базе данных как строка. Теперь я расскажу, что нужно обработать и отфильтровать в этом Enum с помощью провайдера Linq для nHibernate, но я продолжаю получать исключения.

Я пытался сравнить Enum со списком Enums, пробовал .ToString () и я до сих пор не могу заставить его работать.

Являются ли пользовательские соглашения активными только для Отдельных критериев?

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Я использую GenericEnumMapper и у меня никогда не было проблем с ссылочными запросами.

Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>();

Не знаю, как применить это к AutoMapping, потому что я его редко использую.Может быть, что-то вроде этого

.Override<MerchantStatus>(map =>
{
  map.Map(x => x.Status)
    .CustomType<GenericEnumMapper<MerchantStatus>>();
});
1 голос
/ 17 августа 2011

Вам необходимо создать собственный IUserType для преобразования enum в его строковое представление и обратно. Вот хороший пример на C # здесь

Есть еще один пост примерно такой же: http://softwareblog.morlok.net/2009/07/02/mapping-enums-to-custom-strings-in-nhibernate/

Надеюсь, это поможет вам ..

1 голос
/ 17 августа 2011

Используете ли вы Fluent NHibernate? Если это так, вы можете использовать Map () ... Кроме того, убедитесь, что ваше Automapping не конфликтует с Fluent NH и что вы правильно зарегистрировали все свои соглашения.

...