В проекте, над которым я работаю, имеется устаревшая база данных с большим количеством информации, которая используется для изменения поведения приложения. По сути, я застрял с чем-то, что я должен быть супер осторожным с изменением.
На мою проблему. В этой базе данных есть таблица, а в этой таблице - столбец. Этот столбец содержит целые числа, и большинство ранее существующих данных имеют значение ноль для этого столбца.
Проблема в том, что этот столбец на самом деле является ссылкой внешнего ключа на другой объект, просто он никогда не определялся как таковой в схеме базы данных.
Теперь в моем новом коде я определил свое отображение Fluent-NHibernate для обработки этого столбца как ссылки, чтобы мне не приходилось иметь дело с идентификаторами сущностей непосредственно в моем коде. Это работает нормально, пока я не наткнусь на сущность со значением 0 в этом столбце.
NHibernate считает, что значение 0 является допустимой ссылкой. Когда мой код пытается использовать этот объект, на который ссылаются, я получаю исключение ObjectNotFoundException, так как очевидно, что в моей базе данных нет объекта с идентификатором 0.
Как я могу, с помощью сопоставления или какого-то соглашения (я использую Fluent-nhibernate), получить NHibernate для обработки идентификаторов, которые равны 0, как если бы это было NULL?