0

KeyTableスタイルのIDメソッドをEF5に実装する方法

LightSpeedの「データベース内のテーブルを使用して次のIDを格納し、新しいIDのブロックが必要になるたびにこの値を進めます」

これはOracleシーケンスのようなものだと思います。

これは簡単なはずだと感じます(LightSpeedの場合と同じです)。これにより、ORMは一括挿入を簡単に実行できます。つまり、一度に10個のIDを取得してから、データベースに一括挿入を実行できます。

Silverlightと通信するEF5/WCF RIAサービス(最新)を使用しています。プロジェクトの残りの部分では、一括挿入SSISのものを使用し、SLプロジェクトはいくつかの挿入を行います。だから私はこの慣習に従う必要があります。

4

1 に答える 1

1

質問は基本的に、Entity Frameworkがこのスタイルのキー生成をサポートできるかどうかについてであり、質問の2番目の部分は、RIAサービスがそれとOKを統合するかどうかです。

NHibernateで利用できるさまざまなキー生成戦略を思い出します。

これが、EFが「箱から出してすぐに」NHibernateのような完全なサポートを持っていないことを示唆する答えです。

残念ながら、EFにはNHibernateのようにPOIDジェネレーターに非常に近いものはありませんが、EFの次のリリースに同様の機能が含まれるという噂を聞いています。

EntityFrameworkのHiLOから

この回答は、RIAサービスでの保存(具体的には挿入)をインターセプトし、SPROCを呼び出して新しいIDを取得するのはそれほど難しいことではないことを示唆しています。

レコードを保存する前に、ストアドプロシージャを呼び出して値を取得するだけで済みます[これをに入れることができます]、コンテキストでオーバーライドされたSaveChanges()

Entity Framework 4.1コードファーストで主キーを手動で生成するための最良の方法については、https://stackoverflow.com/a/5924487/5351を参照してください。

と同様の答えはここにあります... https://stackoverflow.com/a/5277642/5351

EFを使用してHiLoジェネレーター(より堅牢なkey genパターン)を実装する可能性に関するいくつかの調査結果を次に示します。

Hi / Loパターンは、データベースではなくクライアント側でセーフIDを生成するためのメカニズムを記述します。この文脈で安全とは、衝突がないことを意味します。このパターンは、次の3つの理由で興味深いものです。

  • 作業単位のパターンを壊すことはありません(このリンクと他のリンクを確認してください)
  • 他のDBMSのシーケンスジェネレーターのように、多くのラウンドトリップは必要ありません。
  • GUID手法とは異なり、人間が読める形式の識別子を生成します。

http://joseoncode.com/2011/03/23/hilo-for-entityframework/から

于 2012-11-21T10:39:53.980 に答える