HTML隠し入力フィールドにTSQLタイムスタンプ/行バージョン値を「比較可能な」値として保存する方法は?
例:
データベースのテーブル行から「タイムスタンプ」をバイト配列として取得します。この値を文字列として HTML ドキュメントに保存したいと考えています。送信後、ユーザーがページをリクエストしたときに取得したタイムスタンプを読み取り、それをデータベースの現在のタイムスタンプと比較したいと考えています。
byte[] data = dataReader["dt"] as byte[];
非表示フィールドに文字列として保存する必要があります。
hiddenField.Value = Convert.ToBase64String(data);
そして、それを元に変換します:
byte[] data = Convert.FromBase64String(hiddenField.Value);
比較:
bool areEqual = data .SequenceEqual(data )
PS: SqlServer の TimeStamp は DateTime を意味しません! これは実際には長さ 8 のバイト配列です 。T-Sql のタイムスタンプは C# で何を意味しますか?
{ 0, 120, 200, 20, 52, 33 } は "0 120 200 20 52 33" に変わります。このプロパティも設定できるようにして、タイムスタンプ バイト配列を更新します。
このプロパティをレンダリングされたページの非表示フィールドにバインドします。
フォームが投稿されると、extra プロパティの設定によってタイムスタンプ バイト配列の値が設定されます。これで、データベースのタイムスタンプと比較できます。