2012-03-05 1 views
1

EF 4.1+(またはEF5 Beta)を使用して識別関係を作成する場合、従属エンティティに外部キープロパティを公開する必要がありますか? Fluent APIを使用する場合DbContextがエンティティとは異なるプロジェクトにある場合EF4.1 +では、識別関係を強制するために、従属エンティティに外部キープロパティを公開する必要がありますか?

これ以外の方法はありません。 DbModelBuilderは、主キーの一部として外部キーのプロパティを含めるために、外部キーのプロパティを知る必要があります。しかし、プロパティが公開されておらず、Entity & DbContextの実装が異なるプロジェクト/ライブラリにある場合、公開する方法はありません(エンティティlibにInternalsVisibleToを入れたくありません)。

+1

「識別する」関係とは何ですか?あなたの質問に小さな例を追加できますか? – Slauma

+0

@スラマ:[Here](http://stackoverflow.com/questions/4922228/entity-framework-4-delete-object-from-entity-collection/4925040#4925040)あなたは例があります。 –

+0

@Slauma、私はまた、msdn doc "Identifying and Non-Identification Relationships"を参照していました。http://msdn.microsoft.com/en-us/library/ee373856.aspx – danludwig

答えて

4

リレーションシップを識別するには、そのプロパティがプライマリキーの一部でなければならないため、常に依存するエンティティでFKプロパティが公開されている必要があります。私はDbContextで試してみませんでしたが、内部的な問題やバグがなければ動作しません。

+0

ありがとうLadislav、はいそれは従属エンティティのfkプロパティを公開するときに機能します。私は、外来キーを公開せずに(つまり、ナビゲーションプロパティのみを公開して)識別関係を強制するいくつかの魔法の方法があることを期待していました。 – danludwig

関連する問題