FluentNHibernate: точность DateTime по умолчанию изменилась?

В настоящее время я пытаюсь перейти с FluentNHibernate 1.4 / NHibernate 3.4.1 на FluentNHibernate 2.1.2 / NHibernate 5.2.4. Используемая база данных - DB2 LUW 11.1, целевая платформа .NET - 4.61.

Проблемная линия отображения:

 Map(x => x.TimeStamp).Column("TS").Nullable();

Давным-давно я написал тест на устойчивость, который гарантирует, что между отображенным свойством DateTime и полем TIMESTAMP никакие миллисекунды не сохраняются. На старых сборках тест проходит, на новых - нет. Теперь мне нужно использовать DateTimeNoMsType в качестве настраиваемого типа, чтобы получить старое поведение (думая об использовании соглашения, чтобы его обычно обрабатывали):

Map(x => x.TimeStamp).Column("TS").Nullable().CustomType<DateTimeNoMsType>();

Мой вопрос: правильно ли я предполагаю, что изменилась обработка свойств DateTime по умолчанию? Я попытался найти документацию / описания этапов различных свободно распространяемых версий nhibernate и nhibernate на GitHub, к сожалению, безрезультатно ...


person Udontknow    schedule 27.03.2019    source источник


Ответы (1)


Нашел, это критическое изменение от NHibernate 5.0.0.

https://github.com/nhibernate/nhibernate-core/blob/5.1.5/releasenotes.txt

  • Тип NHibernate DateTimeType, который используется по умолчанию для DateTime .Net, больше не сокращает доли секунды. Используйте DateTimeNoMsType, если хотите сократить доли секунды. Это также относится к его аналогам Local / Utc.
person Udontknow    schedule 28.03.2019
comment
Да, это не имеет ничего общего с FluentNHibernate. - person Oskar Berggren; 04.04.2019