1

Code First/Fluent API を使用してデータベースを設計していて、次の質問に直面しました。

異なるテーブルを参照できる FK をマップする方法は?

これはシナリオです:

5 レベルの階層を持つ勘定科目チャートがあります。

上から下へ (1 対多: Acc1 は多くの Acc2 を持つことができ、Acc2 は Acc1 を持つ必要があります):

アカウント 1 -> アカウント 2 -> アカウント 3 -> アカウント 4 -> アカウント 5

例: サプライヤーは、1 または 2 または 3 または 4 または 5 のいずれかのアカウント チャートに含まれる可能性があります (これは、コマーシャル オートメーションのルールです)。

流暢な API を使用してそれを進めるには?

DB モデル

4

1 に答える 1

1

あなたがやろうとしていることが EF では不可能なだけではありません。データベースでは不可能です。1 つの外部キーで参照できるテーブルは 1 つだけです。

アカウント 1 ~ 5 のデータ要件が同じである場合は、それ自体を参照する外部キーを持つ 1 つのテーブルにそれらを結合することを検討する必要があります。

Accounts
------
AccountId int not null pk
Level (1-5)
ParentId int null fk (references Accounts(AccountId))
OtherColumnsAsNeeded

Supplier
------
SupplierId int not null fk (references Accounts(AccountId))
ParentId int not null fk (reference Accounts(AccountId))

これにより、EF でのモデリングがはるかに簡単になります。コードで特定のビジネス ルールを維持する必要があります (たとえば、レベル 2 のアカウントにはレベル 1 の ParentId が必要です)。

于 2015-01-22T12:47:37.430 に答える