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