NHibernate 2. * файлы сопоставления: как определить тип DateTime, допускающий значение NULL (DateTime?)?

Я знаю, что одним из критических изменений в NHibernate 2. * является то, что NHibernate.Nullables больше не поддерживаются. Следовательно, что вы используете в своем файле сопоставления для сопоставления DateTime, допускающего значение NULL? тип? Например:

По понятным причинам не работает:

<property name="CreateDate" column="CreateDate" type="DateTime?" not-null="false" />

И больше не поддерживаются:

<property name="ModifiedDate" column="ModifiedDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" not-null="false"/>

Я знаю, что это должно быть так очевидно, но я не нахожу этого!

Ответ очень прост: NHibernate проанализирует рассматриваемый класс и обнаружит, что отраженным типом свойства является DateTime? все само по себе.

Спасибо @Justice!


person Ted    schedule 27.02.2009    source источник


Ответы (1)


<property name="CreatedDate" />
  • NHibernate проанализирует рассматриваемый класс и обнаружит, что отраженный тип свойства DateTime? сам по себе.
  • NHibernate предполагает, что имя столбца по умолчанию совпадает с именем свойства, если вы не укажете иное.
  • NHibernate будет считать, что любое свойство допускает значение NULL (not-null="false"), если вы не укажете иное.

Если очень хочется, должно получиться что-то вроде ...

<property name="CreatedDate" type="System.Nullable`1[[System.DateTime, mscorlib]], mscorlib" />
person yfeldblum    schedule 27.02.2009
comment
Большое спасибо. Я знаю номер два и три, но не могу поверить, что никогда не видел первый - так просто, а? - person Ted; 27.02.2009
comment
FWIW, это намного проще, используя что-то вроде атрибутов сопоставления, где это будет просто [Property(Name="CreatedDate", TypeType=typeof(DateTime?))] - person Joseph Nields; 24.11.2015