Как я могу сказать NHibernate, что загрузка компонента не равна нулю, даже если все его свойства равны нулю? - PullRequest
4 голосов
/ 21 мая 2010

У меня есть класс Date, который переносится поверх DateTime? класс (помогает в насмешках DateTime.Now, наш домен и т. д.)

Класс класса Date имеет только одно защищенное свойство: DateTime? дата

public class Date
{
    protected DateTime? date;
}

// mapping in hbm
<component name="CompletedOn">
  <property column="StartedOn" name="date" access="field" not-null="false" />
</component>

Из документов nhibernate:

Like all value types, components do not support shared references. The null value semantics of a component are ad hoc. When reloading the containing object, NHibernate will assume that if all component columns are null, then the entire component is null. This should be okay for most purposes.

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

Спасибо

Ответы [ 2 ]

5 голосов
/ 23 мая 2010

Я думаю, что вы могли бы достичь этого поведения с помощью слушателя, который реализует IPostLoadEventListener. После того, как объект загружен, вы можете проверить, является ли компонент нулевым, и обновить его, если он есть.

4 голосов
/ 21 мая 2010

Не думаю, что вы можете изменить это поведение.

Однако обычно проще заставить NH работать как обычно (получая значение NULL) и обернуть его в модель вашего домена.

Но из того, что я вижу, похоже, что вы делаете это, возможно, для представления (привязки данных?). Не проще ли выставить DateTime??

...