我使用了S#arpArchitecture(ASP.NET MVC和功能NHibernate)。我有一个实体如下:

public class User : Entity
{
    public User(){}
    public User(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }

    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual DateTime? LastUpdate{ get; set; }
}

我会请我的库类SaveOrUpdate方法,将仍然存在这样的用户对象。有用。我将如何与最新的日期和时间自动持续的LASTUPDATE财产?我可以随时设置LASTUPDATE属性设置为当前日期和时间覆盖在我的仓库的SaveOrUpdate方法,但似乎并没有被正确的,因为如果没有什么在我的实体变了,我不认为NHibernate的会坚持我的对象回数据库,并迫使该属性的设置总是让它坚持回来。

我只希望如果别的东西在我的实体已经改变了这种LASTUPDATE属性设置。

有帮助吗?

解决方案 3

我要一点到另一点的StackOverflow问题,我认为回答我的问题。

其他提示

您应该使用 NHibernate的拦截来做到这一点。重写OnFlushDirty在拦截器实现设置LASTUPDATE属性仅当东西已经改变(即你的目的是脏)。

由于您没有指定数据库类型,我就冒昧和使用MySQL / MariaDB的增加对人的解决方案:

您可以使用您流畅映射类以下内容:

Map(y => y.LastUpdate).CustomSqlType("timestamp").Generated.Always();

此产生具有CURRENT_TIMESTAMP的默认值的MySQL的时间戳列。因此,如果NHibernate的选择刷新你的实体,MySQL将确保该色谱柱进行适当的更新。

我敢肯定,这不符合MSSQL发挥以及时间戳在MSSQL不同的东西(这里这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top