实体框架是否天生支持任何类型的更改跟踪,以检测数据库中的哪些记录是在某个日期x之后添加的,哪些是在某个日期x之前添加的?我知道它支持跟踪实体本身属性的变化,但我认为这有点不同。
如果不在实体框架中,我想知道如何以一种简单的方式来实现这一点。
场景是基于自动推送的数据传输正在发生,例如每小时一次,每次启动推送时,服务器必须知道自上次推送以来添加了哪些记录,然后推送这些记录。
有没有人知道这个标准和可靠的方法?我已经创建了自己的解决方案(观看主键,DateTime列等),但宁愿不重新发明轮子。
答案 0 :(得分:2)
您正在寻找的功能正好是Change Tracking(跟踪为同步情景而更改的行)和/或Change Data Capture(准确跟踪哪些更改,包括更改数据前的图像,更复杂的情况,如审计)。在Comparing Change Data Capture and Change Tracking处对两者进行了比较,其中也涵盖了这两个地址中的每一个的主要场景。请注意,“自己滚动”不起作用,因为您需要引擎中的特殊支持来检测某些类型的更改,或者阻止可能导致更改跟踪的操作。
实体框架与这些操作无关。
答案 1 :(得分:0)
我不认为实体框架提供了您正在寻找的东西。我可以想到两个解决方案(假设您正在使用MS SQL Server):
使用rowversion列并让您的更新检查路由更新当前rowversion的另一列。如果,当更改检查路由再次运行时,rowversion与您知道已修改的rowversioncopy不匹配。这可能是也可能不是一种可行的方法,具体取决于您要处理的行数。
另一种方法是在表格上使用触发器,让它们触发你的变更处理。