-1

我创建了模型类并添加了记录器字段CreatedOnModifiedOn. 我为同一个模型创建了一个 crud 类。我想在没有任何表单输入文件的情况下处理这个记录器,并想自动添加到 db 表中。我怎样才能做到这一点?

4

2 回答 2

2

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

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

如果您使用的是实体框架,您可以挂接到 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();
    }
}
于 2012-07-11T10:23:35.417 回答
1

对不起,我不确定你的意思是什么。难道你不只是在你的控制器中填充这些记录器字段吗?

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

于 2012-07-11T10:07:20.103 回答