2009-02-27 15 views
15

Znam jedną z przełamujących zmian z NHibernate 2. * jest to, że NHibernate.Nullables nie są już obsługiwane. W związku z tym, co używasz w pliku odwzorowania do mapowania zerowalnego terminu? rodzaj? Dla tj .:NHibernate 2. * mapowanie plików: jak zdefiniować zerowalny typ DateTime (DateTime?)?

Zrozumiałe nie działa:

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

i nie są już obsługiwane:

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

wiem, to musi być tak oczywiste, ale nie jestem ze znalezieniem go!

Odpowiedź jest tak prosta, jak: NHibernate będzie odzwierciedlać daną klasę i odkryć, że typem odbitej właściwości jest DateTime? wszystko na własną rękę.

Dzięki @Justice!

Odpowiedz

28
<property name="CreatedDate" /> 
  • NHibernate będzie odzwierciedlać nad danej klasy i dowiedzieć się, że właściwość typ odzwierciedlone jest DateTime? wszystko na własną rękę.
  • NHibernate przyjmie, że nazwa kolumny jest domyślnie taka sama jak nazwa właściwości, chyba że powiesz mu inaczej.
  • NHibernate zakłada, że ​​dowolna właściwość jest zerowa (not-null="false"), chyba że powiesz mu inaczej.

Jeśli naprawdę chcesz, powinno być coś podobnego ...

<property name="CreatedDate" type="System.Nullable`1[[System.DateTime, mscorlib]], mscorlib" /> 
+0

Much dzięki. Znam numer dwa i trzy, ale nie mogę uwierzyć, że nigdy nie widziałem pierwszego - to proste, co? – Ted

+0

FWIW, jest to o wiele łatwiejsze przy użyciu czegoś takiego jak atrybuty odwzorowania, gdzie byłoby to po prostu '[Właściwość (Name =" CreatedDate ", TypeType = typeof (DateTime?))]' –

Powiązane problemy