質問

タイトルの定式化の仕方は本当に知りませんでした。 しかし、これは私の問題です。 キャッシュオブジェクトを更新するためにSqlCacheDependenciesを使用しています。しかし、この背後にあるクエリは「複雑」です。多少簡単にしたいと思います。

最初に考えたのは、DateChangedなどのフィールド名を追加し、DateChangedを使用して、テーブルのすべての列を読み込む代わりに、オブジェクトが実際に変更されたかどうかを確認することでした。

SELECT DateChanged FROM Table1

の代わりに

SELECT Id, Title, DateChanged, Description FROM Table1

しかし、他の方法でこれを行う方法があるか、または変更を示す列に名前を付けるための標準があるかどうかを誰かが教えてくれることを望んでいました。 「エンティティフレームワーク」のようなフレームワークはどうですか。または「NHibernate」これを処理しますか?

役に立ちましたか?

解決

通常"と呼ばれますタイムスタンプ"

ie in

他のヒント

これらは、「監査可能」で使用する列です。エンティティ:

version: hibernate's optimistic concurrency control
createdBy: FK to users
modifiedBy: FK to users
createdAt: timestamp
modifiedAt: timestamp

SQL Serverを使用している場合、タイムスタンプ列の名前がやや誤解を招くことに注意してください。列の変更を追跡するために使用できますが、その値は日付や時刻とは関係ありません。これは、データベース内の一意のIDと考えることができます。 http://msdn.microsoft.com/en-us/library/aa260631。 aspx

変更が行われたかどうかを知るには、cherouvimの答えのように、2つのタイムスタンプが必要です。 1つはオブジェクトの作成時に設定され、もう1つはおそらく更新トリガーによる変更時に設定されます。それらが異なる場合、オブジェクトは編集されていますが、正確な時期はわかりません。

SQL Serverでは、同じパターンを使用する必要がありますが、datetime列が必要です。その後、modの日付から作成日を引くことにより、行の日付を計算できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top