NHibernate ISet объекта значений Ошибка в производственных значениях NULL в инструкции DELETE для полей, которые имеют значение - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть ошибка в производственном процессе, которая построена на 2 веб-серверах для общей базы данных SQL-сервера.

У меня есть один корневой объект с ISet объектов-значений.

Отображениевыглядит следующим образом.

        mapping.HasMany(x => x.DayInfos)
            .Access.CamelCaseField(Prefix.Underscore)
            .Table("WeeklyMailDayInfo")
            .Component(c =>
                           {
                               c.Map(x => x.DayOfWeek);
                               c.Map(x => x.ImageText);
                               c.Map(x => x.ImageUrl);
                           });

Когда пользователь изменяет ImageUrl, код просто удаляет и добавляет новый DayInfo в ISet.

Проблема, которую я вижу в работе, связана с файлами журналов, созданнымиNHibernate.В журнале указывается УДАЛИТЬ ИЗ WeeklyMailDayInfo ГДЕ WeeklyMailFk = @ p0 И DayOfWeek = @ p1 И ImageText = @ p2 И ImageUrl = @ p3; @ p0 = 3003, @ p1 = 'Вторник', @ p2 = NULL, @ p3 = NULL

Обратите внимание на 2 нуля, даже если в ImageUrl и ImageText уже есть значение.

Я не могу воспроизвести это в любом юниттесте или в моей среде разработки.

DevWeb июнит-тесты выполняются против SQLite

1 Ответ

0 голосов
/ 16 ноября 2010

Поскольку вы отображаете список компонентов, NHibernate не имеет первичного ключа для уникальной идентификации строки. Поэтому он должен выполнить УДАЛЕНИЕ на основе равенства со всеми столбцами, как вы указали.

Что касается NULL, пытались ли вы запустить свой набор тестов с копией производства? Вы уверены, что в коллекции нет объектов DayInfo без ImageText и ImageUrl?

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