有没有什么方法可以注册一个回调,在EF7中的模型保存到数据库之前会被调用?我想要做的是设置我在所有模型上的ModifiedBy和ModifiedDate属性。我没有那么热衷于在每次保存之前手动执行此操作,所以我正在寻找一些更通用和自动的方法。实体框架7 SaveChanges
3
A
回答
7
ChangeTracker.Entries()
允许您获取所有实体更改。您可以在DbContext中覆盖SaveChanges
,并使用类似下面的代码来设置修改后的属性。
public override int SaveChanges()
{
SetModifiedInformation();
return base.SaveChanges();
}
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
{
SetModifiedInformation();
return await base.SaveChangesAsync(cancellationToken);
}
private void SetModifiedInformation()
{
foreach (var entityEntry in ChangeTracker.Entries())
{
var entity = entityEntry.Entity as ChangeTracking;
if (entity != null)
{
entity.ModifiedBy = "Get User Here";
entity.ModifiedTime = DateTime.Now;
}
}
}
+0
应该检查entityEntry.State!= EntityState.Unchanged && entityEntry.State!= EntityState.Detached aswell? – Abris
+0
是的,这将是很好的,以确保实体不应被标记为修改时,他们不应该 –
相关问题
- 1. 实体框架SaveChanges错误
- 2. 实体框架SaveChanges问题
- 3. 实体框架:当实体ID的SaveChanges
- 4. 实体框架SaveChanges()不工作?
- 5. 实体框架创建时调用SaveChanges
- 6. SaveChanges()实体框架问题4.1
- 7. ADO.NET实体框架SaveChanges()不起作用
- 8. 实体框架覆盖的SaveChanges错误
- 9. ADO.NET实体框架SaveChanges不起作用
- 10. 实体框架的SaveChanges问题
- 11. SaveChanges vs实体框架中的SaveChangesAsync
- 12. 实体框架SaveChanges不保存数据
- 13. 尝试SaveChanges实体框架5
- 14. 实体框架SaveChanges - 自定义行为?
- 15. 实体框架 - 上的SaveChanges异常
- 16. 实体框架SaveChanges没有更新db
- 17. 实体框架SaveChanges不起作用
- 18. 实体框架 - GUID为EntityKey的SaveChanges
- 19. 实体框架4 Partialy的SaveChanges
- 20. 实体框架7关系
- 21. 实体框架7 Xamarin.Forms
- 22. InverseProperty实体框架7
- 23. 实体框架7组
- 24. 实体框架插入错误的实体插入的SaveChanges
- 25. 实体框架ObjectContext在SaveChanges之前删除实体
- 26. 实体框架7脚手架原名
- 27. 实体框架6.1 - SaveChanges失败,带有可选主体关系
- 28. SaveChanges()不起作用(实体框架,C#,Windows窗体)
- 29. 实体框架最佳实践:什么层应调用SaveChanges()?
- 30. 实体框架7(Beta 7)和实体跟踪
你见过[生成属性](http://ef.readthedocs.org/en/latest/modeling/generated-properties.html)吗? –
从我的理解生成的属性用于标记该属性可以由数据库设置。我想以通用的方式在我的c#代码中设置属性,以确保它在每次保存时发生。 – Abris