如果我使用EF,我想知道跟踪和/或持续更改的最佳做法是什么。我想开始使用EF来开发一个新项目。我需要的是一种改变历史。
我之前就是这样做的:如果创建了一条记录,它会被保存为ID并且ID与InvariantID相同。如果记录已更新,我将其标记为已删除,并使用新值和新ID创建新记录,但具有相同的InvariantID。像这样我总是有我现在的记录,但也有变化的历史。
这适用于我的场景。历史记录的数量不是问题,因为我通常只对那些不经常变化的数据使用它。
这种构建在EF中是以某种方式构建,还是EF的最佳方式是什么?
答案 0 :(得分:1)
不,它不是构建到EF中,它不会以这种方式工作。我甚至认为它不是数据库级别的好方法,因为它使参照完整性非常复杂。
使用EF时,仅当您使用以下方法时才会起作用:
IsDeleted = 0
。它将确保在查询中仅使用未删除的实体。IsDeleted = 1
而不是真正删除记录DeleteObject
删除您的记录,之后您将插入新记录 - 原因是EF无法处理实体在更新期间更改其PK值的情况。