0

Entity Framework に関連付けがありますが、それに属性/プロパティを追加する必要があります。とにかくEntity Frameworkでこれを行うには問題があります(関連付けとして保持したいのですが、プロパティを追加するためにエンティティに変更する必要があります)が、この特定のシナリオでは、もっと良い方法がありました。

関連テーブルは非常に簡単に次のようになります。

CREATE TABLE EntityA_EntityB (
   aId uniqueidentifier,
   bId uniqueidentifier
)

クライアントは、関連付けられた EntityB に優先順位を付ける方法、または順序付けする方法を必要としています。これを行う最善の方法は、このテーブルに注文列 (int) を追加することだと思います。結果は次のようになります。

CREATE TABLE EntityA_EntityB (
   aId uniqueidentifier,
   bId uniqueidentifier,
   order int
)

このシナリオでは、3 つの列すべてが主キーを構成します。これは問題ないように思えますが、関連する EntityB を EntityA に追加するだけでなく、EntityA.EntityBsコレクション内の最大の「順序」番号を見つけて、それをインクリメントする必要があるため、このシステムを使用するコードはかなり複雑になります。新しい関連付けを追加します。

注文列を ID にすることはできますが、aId または bId の値に関係なく、注文列が一貫してインクリメントされます。aId と bId のまったく新しい組み合わせが挿入されたときに 0 の順序を挿入するものが必要です。

これを行うより良い方法はありますか?

ありがとう!

4

1 に答える 1

0

順序整数が連続する必要がない場合は、順序整数を主キーにすることができます。

CREATE TABLE EntityA_EntityB (
   order autoincrementing int
   aId uniqueidentifier,
   bId uniqueidentifier,
)  

(aId, bId, order) に一意のインデックスがあり、(bId, aId, order) に別の一意のインデックスがあります。

aId と bId を使用して行を追加するだけで、データベースが整数の順序を処理します。

于 2013-02-25T14:46:19.420 に答える