powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate сохранить DateTime.Min/Max
6 сообщений из 6, страница 1 из 1
NHibernate сохранить DateTime.Min/Max
    #38047851
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сущность вида:

Код: c#
1.
2.
3.
4.
5.
6.
public class Order : Entity
    {
        public virtual DateTime OrderDate { get; set; }

        public virtual DateTime DeliveredDate { get; set; }
    }



и ее маппинг:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class OrderMap : ClassMap<Order>
    {
        public OrderMap()
        {
            Id(x => x.ID).GeneratedBy.HiLo("100");

            Map(x => x.OrderDate).Not.Nullable().CustomSqlType("datetime2");

            Map(x => x.DeliveredDate).CustomSqlType("datetime2");
        }
    }



Однако при попытках записать в базу сущность со значениями свойств OrderDate или DeliveredDate по умолчанию (DateTime.Min) получаем "Переполнение SqlDateTime. Должно находиться в пределах от 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM.".
При этом столбцы в базе имеют тип datetime2.
Что нужно сделать чтобы работать со всем диапазоном DateTime.Min/Max?
...
Рейтинг: 0 / 0
NHibernate сохранить DateTime.Min/Max
    #38047900
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxx,

поищите какой-нибудь подходящий маппинг в FNH. Сам NHibernate поддерживает этот тип.
...
Рейтинг: 0 / 0
NHibernate сохранить DateTime.Min/Max
    #38047908
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorпоищите какой-нибудь подходящий маппинг в FNH. ...
На сколько я понял с маппингом все в порядке, так как на SQL-сервере соответствующие поля имеют правильный тип.
Не подскажете как оно должно выглядеть при маппинге в XML?
У меня после экспорта получается вот что:

Код: xml
1.
2.
3.
4.
5.
6.
7.
<property name="OrderDate" type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="OrderDate" not-null="true" sql-type="datetime2" />
</property>
    
<property name="DeliveredDate" type="System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="DeliveredDate" sql-type="datetime2" />
</property>
...
Рейтинг: 0 / 0
NHibernate сохранить DateTime.Min/Max
    #38047920
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxx,

Код: xml
1.
<property name="RepeaterOrderCreationDate" type="DateTime2" />


В свойстве type не обязательно должны быть только .net типы, NH поддерживает и немного своих.
...
Рейтинг: 0 / 0
NHibernate сохранить DateTime.Min/Max
    #38047924
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

собственно, особые типы NHibernate описаны тут .
...
Рейтинг: 0 / 0
NHibernate сохранить DateTime.Min/Max
    #38047957
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Спасибо за помощь!

Проблема решается двумя способами.
1-й, в маппинге пишем:

Код: c#
1.
2.
Map(x => x.OrderDate)
    .CustomType("DateTime2");



2-й, при помощи этого класса в более типобезопасной манере в маппинге пишем:

Код: c#
1.
2.
Map(x => x.DeliveredDate)
    .CustomType<DateTime2UserType>();
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate сохранить DateTime.Min/Max
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]