Sections
(SQL Server)ID
は、ソートの目的で(int, identity)
とSortIndex
の主キーとして使用されます。Entity Frameworkはトリガーによって変更された値を更新しません
データベースには、それぞれINSERT
にSortIndex := ID
を設定するトリガーがあります。明らかに、2つの行の値を入れ替えて後でソートインデックスを変更したいと思います。
私はEntity Frameworkを使用してデータにアクセスします。すべてMVC3 Webアプリケーションでアクセスします。
問題は、テーブルに新しいオブジェクトを挿入した後、Entity FrameworkはSortIndex
の値を更新しないということです。また、すべてのデータをキャッシュするので、このテーブルからすべてのオブジェクトを取得する次の呼び出しでも、このオブジェクトの値が誤ってSortIndex
になります。
この列のStoreGeneratedPattern
をEDMX
に変更しようとしました。これは素晴らしいとエレガントだが、問題を解決していないようだ。
Identity
に設定すると、EFによって値が正しく更新されますが、読み取り専用になります(変更しようとすると例外がスローされます)。 Computed
に設定するのは似ていますが、例外がスローされるのではなく、値はDBに書き込まれません。
私はちょうど行うことによって、オブジェクトを挿入した後、それを使用する必要がある場合、私はEFのオブジェクトを毎回再作成することができます。
DatabaseEntities db = new DatabaseEntities()
をしかし、それは私のために醜い回避策のように思えます。
この問題の解決方法を教えてください。
明らかに、私が毎晩insert
の後で何らかのアクションを行う必要がない(忘れられて気づかなかったリスクがある)ことは明らかです。
可能な重複:http://stackoverflow.com/questions/5445243/reload-field-value-in-db-by-after-insert-update –
これは似ていますが、彼は書き込む必要のないフィールドを持っているようです。彼のためには "Computed"がうまくいくはずです。いくつかのバグのせいで動作しません。 – Arek