2 votes

Validateur NHibernate et date-heure nulle

Il doit y avoir une solution simple. J'essaie d'utiliser les attributs du validateur NHibernate sur mes propriétés DateTime. Si la valeur est nulle (via [NotNull] ), je veux qu'il échoue à la validation. Quand je soumets une valeur nulle, elle est convertie en 1/1/0001 12:00:00 AM et NHibernate ne le considère pas comme nul. Je suppose que je pourrais écrire une règle de validation personnalisée qui renvoie false si cette date est soumise, mais il y a sûrement un moyen standard de contourner ce problème ?

Clarification : Ceci est un exemple de classe,

public class ExampleClass {

  [NotNull]
  public virtual DateTime MySpecialDateProperty { get; set; }

  [NotNullOrEmpty]
  public virtual string MyString { get; set; }
}

J'ai configuré NHibernate Validator de sorte que dans mon contrôleur, je peux faire :

newExampleClass.IsValid() et si elle est vraie, elle sera persistée dans la base de données, sinon je retournerai newExampleClass.ValidationResults()

Lorsque je crée une nouvelle instance de ExampleClass le MySpecialDateProperty est initialisée à 1/1/0001 ... et le validateur ne la considère pas comme une valeur nulle.

Edit 2 : Devrais-je mettre DateTime à nullable ( DateTime? ) qui empêcherait NHibernate de fixer la valeur à la DateTime minimale ?

7voto

Jamie Ide Points 28680

Vous devez utiliser un type nullable. DateTime est initialisé à DateTime.MinValue (1/1/0001). Essayez :

  [NotNull]
  public virtual DateTime? MySpecialDateProperty { get; set; }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X