如何在使用Sharp Architecture的saveOrUpdate之前自动更新字段

时间:2010-08-26 00:37:52

标签: asp.net-mvc asp.net-mvc-2

假设我有这个实体

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; }
}

我想在每次SaveOrUpdate调用之前更新ModifiedDate吗? 我怎么能这样做?

有没有办法在存储库中挂钩?

1 个答案:

答案 0 :(得分:0)

假设你正在使用带有SharpArchitecture的NHibernate(因为这是一条快乐的路径),最好的选择可能是添加一个自定义的NHibernate监听器。这里解释一个例子:http://jakescott.tumblr.com/post/132853681/nhibernate-listeners-easy-last-modified-dates

如果是我,我可能会调整该实现以使用DateTime.UtcNow而不是DateTime.Now,但这取决于您的需求,所以只需选择您的偏好。

由于您可能也在使用FluentNHibernate,请参阅http://ferventcoder.com/archive/2009/11/18/nhibernate-event-listener-registration-with-fluent-nhibernate.aspx以查找Fluent配置解决方案。

作为替代方案,您当然可以编写存储库实现来为您执行此操作。