Поле в сопоставленном объекте обязательно - PullRequest
1 голос
/ 06 октября 2009

Я не уверен, что моя проблема решается более или менее удобным способом.

Существует класс Person, который сопоставил hasOne участника.

У человека день рождения, но это поле не обязательно для самого человека. Но если я хотел бы добавить участника к человеку , тогда день рождения требуется.

Как от этого избавиться

  • перенести информацию о дне рождения на объект участника -> Вот как я это сделал на данный момент, но я думаю, что перемещение информации о человеке в другие объекты не может быть окончательным решением
  • Отобразить свойство в обоих классах -> как сообщить валидатору, когда оно требуется, а когда нет?
  • Объединить два объекта -> пока не разрешено

Может быть, у кого-то есть идея получше, я использую nHibernate Validator и там настраиваю проверку в классе (где информация «день рождения» не является свойством для обоих - может быть, это будет решением?)

1 Ответ

0 голосов
/ 06 октября 2009

С атрибутами валидатора NHibernate, как вы упомянули. Это будет в классе участника. Будет ли это работать для вас? Это необязательно для базового класса и может иметь значение nullable (вы не можете изменить тип при переопределении)

[NotNull, NotEmpty]
public override DateTime? Birthday { get; set; }

Это все равно оставит поле обнуляемым в БД, но не обойти это без наличия таблицы для реализации класса, а не для быстрой реализации класса в иерархии. Хотя ваш домен будет защищен для защиты.

...