0

2つのSQLテーブル間に外部キー制約を作成しました。次に、プロジェクトのEDMXに移動し、「データベースから更新されたモデル」を選択しました。ただし、私の図には、テーブル間に線がなく、テーブルにナビゲーションプロパティもありません。私が線を気にする唯一の理由は、線、ナビゲーションプロパティ、およびEFが理解する関係がすべて何らかの形で結びついているためです。EFは関係について別の考えを持っていたので、データの整合性を台無しにしたくありません。

質問:EFはデータベースからナビゲーションプロパティをどのように取得しますか?状態がSQL自体の内部で維持されている場合、それを理解するためにAzure SQLサーバーにどのような追加コマンドを発行する必要がありますか?または、EDMXを手動で変更する必要がありますか?

これが、2つのテーブルを接続する外部キーを作成した方法です。

ALTER TABLE [dbo].[Employee]  
WITH CHECK ADD  CONSTRAINT [FK_Employee_Office_City] FOREIGN KEY([City])
REFERENCES [dbo].[Office] ([City])
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Office_City]
GO

重要な部分:親テーブル(Office)の[City]列は主キーではありませんが、UNIQUE INDEX列です。

また、最初はEFコードを使用していましたが、プロジェクトが成長するにつれてデータベースファーストに切り替えました。その切り替えポイントで、データベースからEDMXを完全に再生成する必要がありました。また、古いテーブルにはまだ優れたナビゲーションプロパティ(EDMXの再生成後)があるため、EFがそれらを再作成するには、その状態をデータベースに何らかの方法で保存する必要があります。方法がわからない...

4

1 に答える 1

1

EFは一意のキーを理解しないため、機能しません。マップされた関係が必要な場合は、プリンシパルテーブルのキーがプライマリキーである必要があります。

于 2012-11-22T09:49:49.727 に答える