如何填充CreatedOn和ModifedOn?

时间:2012-07-11 09:58:24

标签: asp.net-mvc-3

我创建了模型类,并添加了记录器字段CreatedOnModifiedOn。我为同一个模型创建了一个crud类。我想处理这个记录器没有任何表单输入字段,并希望自动添加到数据库表。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

这取决于您的偏好/持久性模型。

您可以在构造函数中填充CreatedOn属性,并在每次保存时填充ModifiedOn属性。

如果您使用的是Entity Framework,则可以挂钩DataContext上的SaveChanges()方法,并在那里填充CreatedOn和ModifiedOn属性。确保您的属性是基类/接口的一部分,如(IAuditable),然后您可以执行类似

的操作
public class YourContext : DbContext
{
    public override int SaveChanges()
    {
       ChangeTracker.DetectChanges();

        ObjectContext ctx = ((IObjectContextAdapter)this).ObjectContext;

        List<ObjectStateEntry> objectStateEntryList =
            ctx.ObjectStateManager.GetObjectStateEntries(EntityState.Added
                                                       | EntityState.Modified
                                                       | EntityState.Deleted)
            .ToList();

        foreach (ObjectStateEntry entry in objectStateEntryList)
        {
            var auditObject = entry.Entity as IAuditable;
            if(auditObject.CreatedOn != DateTime.MinValue)
            {
                auditObject.CreatedOn = DateTime.Now;
            }

            auditObject.ModifiedOn = DateTime.Now;
        }

        return base.SaveChanges();
    }
}

答案 1 :(得分:1)

抱歉,我不确定你的意思。难道你不能在后期操作中填充控制器中的这些记录器字段吗?

(对不起,如果我误解了)