(Свободно) NHibernate - отображение Varchar для Int32 - PullRequest
1 голос
/ 09 апреля 2009

Мы работаем с устаревшей базой данных, которая сохраняет целочисленные значения в столбце varchar. Нам нужно сопоставить этот столбец со свойством Int32, и он хорошо работает, если данные в столбце базы данных являются числовыми или NULL.

Но у нас есть проблемы, если столбец содержит пустую строку вместо null - nhibernate выдает ошибку, что он не может преобразовать его в целое число.

Можно ли настроить сопоставление классов для автоматического преобразования всех значений, когда исключение возрастает, до некоторого значения по умолчанию (в данном случае, нуля)?

1 Ответ

2 голосов
/ 09 апреля 2009

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

Но у вас действительно есть такая потребность? Вы можете сопоставить закрытый или доступный только для чтения элемент для столбца varchar и использовать другое свойство для управления им.

private string _varcharField;

public string VarcharField
{
    get { return _varcharField; }
}

public int IntProperty
{
    get { [parse and return _varcharField]; }
    set { _varcharField = value.ToString(); }
}

В этом примере _varcharField будет отображаться в NHibernate с использованием стратегии доступа.

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