我创建了模型类并添加了记录器字段CreatedOn
和ModifiedOn
. 我为同一个模型创建了一个 crud 类。我想在没有任何表单输入文件的情况下处理这个记录器,并想自动添加到 db 表中。我怎样才能做到这一点?
问问题
137 次
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 回答