2010-08-26 4 views
0

Disons que j'ai cette entitéComment puis-je mettre à jour automatiquement un champ avant saveOrUpdate avec l'architecture de Sharp

public class Address : Entity 
{ 
    public Address() 
    { 
     ModifiedDate = DateTime.Now; 
    } 

    [NotNull] 
    public virtual Province Province { get; set; } 

    [NotNullNotEmpty] 
    [Length(Max = 80)] 
    public virtual string Line1 { get; set; } 

    [Length(Max = 80)] 
    public virtual string Line2 { get; set; } 

    [NotNullNotEmpty] 
    [Length(Max=50)] 
    public virtual string City { get; set; } 

    [NotNullNotEmpty] 
    [Length(Max = 15)] 
    public virtual string PostalCode { get; set; } 

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

je veux que le ModifiedDate soit mis à jour avant chaque appel saveOrUpdate? Comment puis-je faire cela?

Existe-t-il un moyen de brancher quelque chose dans le référentiel?

Répondre

0

En supposant que vous utilisez NHibernate avec SharpArchitecture (puisque c'est le bon chemin), la meilleure option est probablement d'ajouter un écouteur NHibernate personnalisé. Un exemple est expliqué ici: http://jakescott.tumblr.com/post/132853681/nhibernate-listeners-easy-last-modified-dates

Si c'était moi, j'ajusterais probablement cette implémentation pour utiliser DateTime.UtcNow au lieu de DateTime.Now, mais cela dépend de vos besoins, alors choisissez simplement votre préférence.

Étant donné que vous utilisez probablement FluentNHibernate, voir http://ferventcoder.com/archive/2009/11/18/nhibernate-event-listener-registration-with-fluent-nhibernate.aspx pour trouver une solution de configuration Fluent. Comme alternative, vous pouvez certainement écrire votre implémentation de référentiel pour le faire pour vous.

+0

Merci Nhibernate auditeur a fait l'affaire très facilement. – mateo

Questions connexes