我真的不知道如何制定标题。 但这是我的问题。 我们正在使用SqlCacheDependencies更新缓存对象。但是这背后的问题是“复杂的”,我们希望它更容易一些。
我们首先想到的是添加一个像DateChanged这样的字段名,并使用DateChanged检查一个对象是否实际已经改变,而不是加载一个表的所有列。
SELECT DateChanged FROM Table1
代替
SELECT Id, Title, DateChanged, Description FROM Table1
但是我希望有人可以告诉我是否有其他方法可以做到这一点,或者是否有标准用于命名指示更改的列。 像“实体框架”或“NHibernate”这样的框架如何处理这个问题?
答案 0 :(得分:1)
答案 1 :(得分:1)
这些是我在“可审核”实体上使用的列:
version: hibernate's optimistic concurrency control createdBy: FK to users modifiedBy: FK to users createdAt: timestamp modifiedAt: timestamp
答案 2 :(得分:0)
如果您在SQL Server上,请注意时间戳列有点误导性命名。虽然它可用于跟踪列的更改,但其值与日期或时间无关。它可以被认为是数据库中的ID uniqiue,仅此而已。 http://msdn.microsoft.com/en-us/library/aa260631.aspx
为了知道是否发生了变化,你需要两个timstamps,比如cherouvim的回答。一个是在创建对象时设置的,另一个是在任何修改时设置的,可能是通过更新触发器。如果它们不同,则对象已被编辑,但您无法准确判断何时。
在SQL Server上,您必须使用相同的模式,但使用datetime列。然后,您可以通过从修改日期减去创建日期来计算行的日期。