我创建了模型类,并添加了记录器字段CreatedOn
和ModifiedOn
。我为同一个模型创建了一个crud类。我想处理这个记录器没有任何表单输入字段,并希望自动添加到数据库表。我怎样才能做到这一点?
答案 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)
抱歉,我不确定你的意思。难道你不能在后期操作中填充控制器中的这些记录器字段吗?
(对不起,如果我误解了)