有沒有什麼方法可以註冊一個回調,在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()實體框架問題4.1
- 5. 實體框架 - GUID爲EntityKey的SaveChanges
- 6. ADO.NET實體框架SaveChanges()不起作用
- 7. 實體框架的SaveChanges問題
- 8. 實體框架SaveChanges()不工作?
- 9. SaveChanges vs實體框架中的SaveChangesAsync
- 10. 實體框架SaveChanges沒有更新db
- 11. ADO.NET實體框架SaveChanges不起作用
- 12. 實體框架7關係
- 13. InverseProperty實體框架7
- 14. 實體框架插入錯誤的實體插入的SaveChanges
- 15. SaveChanges()不起作用(實體框架,C#,Windows窗體)
- 16. 實體框架7(Beta 7)和實體跟蹤
- 17. 實體框架最佳實踐:什麼層應調用SaveChanges()?
- 18. 實體框架7多級子表
- 19. 實體框架7異步收藏
- 20. 實體框架7映射屬性
- 21. 實體框架7錯誤版本
- 22. 實體框架7攔截器
- 23. 更改實體框架7中的列?
- 24. 實體框架7:確定關係
- 25. 實體框架可以使用單個SaveChanges()添加許多相關實體嗎?
- 26. 實體框架 - 在插入內部調用SaveChanges時複製相關實體
- 27. 實體框架SaveChanges錯誤詳細信息
- 28. 實體框架。 SaveChanges覆蓋。跟蹤器返回null
- 29. 實體框架SaveChanges被調用,但它不工作
- 30. 實體框架在調用時發生延遲SaveChanges
你見過[生成屬性](http://ef.readthedocs.org/en/latest/modeling/generated-properties.html)嗎? –
從我的理解生成的屬性用於標記該屬性可以由數據庫設置。我想以通用的方式在我的c#代碼中設置屬性,以確保它在每次保存時發生。 – Abris