беглая карта nHibernate Да Нет, когда столбец обнуляется - PullRequest
2 голосов
/ 09 марта 2012

Я использую свободный nHibernate для сопоставления столбца флага базы данных «Y» / «N» со свойством bool:

Map(x => x.Enabled).Column("ENABLED_FLAG").CustomType("YesNo");

Вопрос в том, как определить, как отобразить нуль? Будет ли значение NULL сопоставлено с истинным, ложным, исключением?

Обновление

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

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Если вы хотите разрешить null, сделайте ваше поле bool?, и оно также будет нулевым в базе данных.

1 голос
/ 31 октября 2013

Если вы хотите изменить функциональность нулевого регистра, вам придется создать собственный настраиваемый тип - по сути, производный от IUserType.

Я сделал что-то похожее с датами (где дата 0-01-01-0001 не может быть сохранена в mssql) и с Guids, где мы хотим вставить ноль вместо Guid.Empty)

Создание собственного пользовательского типа дает возможность переопределить методы NullSafeSet и NullSafeGet - это то, что вы хотите сделать (измените обработку Null при чтении или записи) Возможно, вы даже сможете наследовать от оригинального типа YesNo

Хороший пример http://lostechies.com/rayhouston/2008/03/23/mapping-strings-to-booleans-using-nhibernate-s-iusertype/

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