0

我真的不知道如何制定标题。但这是我的问题。我们正在使用 SqlCacheDependencies 来更新缓存对象。但是这背后的查询是“复杂的”,我们想让它变得更容易一些。

我们的第一个想法是添加一个像 DateChanged 这样的字段名,并使用 DateChanged 来检查对象是否实际发生了更改,而不是加载表的所有列。

SELECT DateChanged FROM Table1

代替

SELECT Id, Title, DateChanged, Description FROM Table1

但我希望有人能告诉我是否有其他方法可以做到这一点,或者是否有标准来命名表示更改的列。“实体框架”或“NHibernate”之类的框架如何处理这个问题?

4

3 回答 3

1

它通常被称为“时间戳”

即在

于 2009-03-03T07:58:10.457 回答
1

这些是我在“可审计”实体上使用的列:

版本:hibernate的乐观并发控制
createdBy: FK 给用户
modifiedBy: FK 给用户
createdAt:时间戳
修改时间:时间戳
于 2009-03-03T08:01:26.423 回答
0

如果您使用的是 SQL Server,请注意时间戳列的命名有些误导。虽然它可用于跟踪列的更改,但它的值与日期或时间无关。它可以被认为是数据库中唯一的 ID,仅此而已。http://msdn.microsoft.com/en-us/library/aa260631.aspx

为了知道是否发生了更改,您需要两个时间戳,就像在 cherouvim 的回答中一样。一个在创建对象时设置,另一个在任何修改时设置,可能通过更新触发器。如果它们不同,则该对象已被编辑,但您无法准确判断何时。

在 SQL Server 上,您必须使用相同的模式,但使用日期时间列。然后,您可以通过从 mod 日期中减去创建日期来计算行的日期。

于 2009-03-03T08:59:18.717 回答