2016-09-30 20 views
1

对于使用ef-core代码优先方法构建的项目,我有一个审计机制。我在“OnModelCreating”函数中设置了“DeleteBehavior”属性以级联一些表。当我删除一个实体时,另一个通过级联删除行为自动删除。这一切都很好,我需要得到所有删除的实体,但我不能。 ChangeTracker不包含级联删除的实体。我怎样才能得到级联删除值?有没有办法做到这一点?针对级联删除值的EF核心审计

+0

你能显示你的代码吗? – Sampath

+0

那么,你可以从数据库中获取实体,但是这完全破坏了级联删除的目的。底线是:客户端应用程序永远不能审计数据库中发生的事情。 [只有数据库可以](https://msdn.microsoft.com/en-us/library/bb933875.aspx)。 –

回答

1

级联删除发生在数据库端。实体框架不需要知道哪个实体将被删除。

实体框架只跟踪更改并删除基础对象。

编辑:答案子问题

你是对的。我是EF +的拥有者。

从技术上讲,一个库可以处理这个问题,但这会带来严重的性能缺陷。我不知道任何处理级联删除方案的功能或库用于审计。

建议?

有一些建议,但我敢肯定你不会喜欢任何人,而且我也不建议他们表现的原因:

  • 不要使用级联删除(你力还检索/删除相关实体)

  • 创建ON D​​ELETE在数据库端触发并记录日志。

我不认为这种情况下有一个很好的解决方案。

+0

我假设你是EF +的创造者,我是对吗?那么,有没有可能的方式来处理你的图书馆的这种情况?如果不是,你会建议什么? – kizilsu

+1

感谢您的回答,这是非常有帮助:) – kizilsu