0

最初に私が持っているエラー:

EntitySet 'Z10Entities.Accounts' 内のすべてのオブジェクトには、一意の主キーが必要です。ただし、タイプ 'DAL.Model.CreditCardAccount' のインスタンスとタイプ 'DAL.Model.Debt' のインスタンスはどちらも同じ主キー値 'EntitySet=Accounts;Id=3' を持っています。

ここに私のスキーマがあります: Table Per Type 継承を使用したスキーマ

私の設計上の観点からは、口座はクレジットカードの種類と負債の両方である可能性があります。何か間違ったことをしたのでしょうか、または EF フレームワーク (4.3.1 バージョン) の制限に達していますか?

編集:私の質問を明確にするために、基本的に、フレームワークがエラーを表示している理由、または動的データの外部キー FieldTemplate が正しく機能していないかどうかを理解しようとしています。

編集 2: この問題は、アプリケーションの他の部分に影響を与えているようです。TPT に問題があるようです:

EntitySet 'Z10Entities.Person' 内のすべてのオブジェクトには、一意の主キーが必要です。ただし、タイプ 'DAL.Model.Employer' のインスタンスとタイプ 'DAL.Model.PortalUser' のインスタンスはどちらも、同じ主キー値 'EntitySet=Person;Id=1b64b850-34f9-e111-bdc8-000c29005764' を持っています。 .

4

1 に答える 1

0

TPT が優れているものとそうでないものがあるようです。私のビジネス設計により、さまざまなアカウントを負債として説明する必要があります (アカウントの償却、クレジット カードの閉鎖など)。

PK から PK へのパターンのため、TPT はこれを処理しません。ベース テーブルを指す FK から PK にする必要があります。この微妙な変更により、必要な機能が容易になり、LinqToEF クエリも簡素化されます。

リファクタリングされたバージョンは次のとおりです。 すべてが正しいです:)

于 2013-01-11T23:17:44.543 に答える