どうなんだ!?Entity Framework

.NET Frameworkで使えるMS謹製O/Rマッピング
それが、Entity Framework。
でも、「Entity Framework」≠「シンプルイズベスト」
今のところ、致命的です。
DBの同一レコードに複数のクライアントから変更がある場合は、
DB内でのレコードの状態とEntity Framework内でのレコードの状態
が追従できなくてレコードの状態をコントロールするのがカオスに
なってきます。
今のところ、こんな感じでObjectContextを局所的に使い捨てる
ことによってキャッシュを破棄するしか思いつかないです。
using (var db = new EDMContainer())
{
・・・・
}
あと、Entity Frameworkから取得したIEnumerableインターフェイスの
オブジェクトはLinq等でアクセスすると意図しないSQL文がサーバに
何度も発行されることになるので、思い切ってToArray()で
ローカルにフェッチするなどしてデータ量に合わせた最適化を
考えたほうがいいです。
とにかく「SQL Server Profiler」による実際のSQL文の発行具合を
確認しないとリリース後に大変な目にあうかもしれません。
まずは「O/Rマッピング」の機能を単体で提供して、
SQLのコンパイル時チェックとか、制御機能に関しては
次のステップにしてほしいなぁ。


この件、.NET Framework3.5ではDataContextに「ObjectTrackingEnabled」
というプロパティが追加されてて、これをfalseにすればキャッシュが無効に
なるみたいです。

Author: kachi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です