0

3 つのエンティティ ( Projects/ Products/ Negotiations) があります。

Negotiation エンティティには、Projects テーブルと Products テーブルの両方の外部キーであるReferencedIdandという名前の列があります。has defineはどのエンティティに属しているか。 しかし、エンティティに新しいメッセージを挿入するために呼び出すと、次のエラーがスローされました。TypeIdReferencedId
TypeIdReferencedId

context.SaveChanges();Negotiation

Server Error in '/' Application.
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ProjectNegotiation". The conflict occurred in database "MyMVCApp", table "dbo.Projects", column 'Id'.
The statement has been terminated. 

編集: これは私のモデルです:

私のモデル

Negotiationsエンティティの外部キーとして1列を使用し、これに2列を使用しないようにするにはどうすればよいですか。

ありがとう。

4

2 に答える 2

0

あなたが言うように-これは概念的な問題です..あなたはForeingKeyを誤用しています。これをしないでください!

Negotiationsを抽象化し、ProductNegotiationsとProjectNegotiationsをNegotiationsのサブクラスとして作成し、そこでナビゲーションプロパティを定義します

于 2012-12-11T13:03:54.670 に答える
0

2 つのテーブルを指す (正式な) 外部キー制約として単一の列を持つことはできません。

これは、型ごとのテーブルまたは階層ごとのテーブル マッピングのバリアントを使用して行うことができます (ここに紹介記事があります) 。

于 2012-12-11T13:08:05.757 に答える