0

私の SQL データベースには 3 つのテーブルしかありません。1 つは Country と呼ばれ、もう 1 つは CountryAlias と呼ばれ、最後は Person です。

ここに画像の説明を入力

tblCounty と tblCountyAlias の関係は、両方の [Country] 列を関連列として使用する 1 対多です。そして、tblCountry と Person の関係は同じです。この例はかなり教科書的なはずです。

私が抱えている問題は、EFが主キーを介してのみ関連付けを行うことを望んでいるようです(またはエンティティキーと呼ぶ必要があります)。だから、私の質問は次のとおりです。

1) EF は、エンティティの少なくとも一方の側がエンティティ キーを使用する場合に関連付けを行うことのみを望んでいますか?

2) エンティティ キーは主キーと同じですか (つまり、ID から削除して国をエンティティ キーにしても安全ですか)?

3) 私は EF が望んでいる方法で戦っていますか? WPFを学ぶということは、戦いが多くの苦痛と失敗をもたらすだけであることを意味しますが、これがEFにも当てはまるかどうかはわかりませんか?

ありがとう

4

1 に答える 1

0

まず、使用する Entity Framework のタイプを指定していませんが、コンテキスト (エンティティ キー) から、コード ファースト タイプ (またはモデル ファースト) を使用している可能性が最も高いと思います。

関連付けを機能させるには、モデルは次のようになります。 ここに画像の説明を入力

ご覧のとおり、文字列型の主キーを使用することは、Entity Framework の規則に違反していません。(人の名前は一意ではない可能性があるため、Person テーブルに Id を含めました)

私の経験に基づく答えは次のとおりです。

1) MSSQL で 1 対多の外部キーを作成する場合、最初の側 (この場合は tblCountry) の列は一意である必要があります。主キーなしで外部キーを作成するを参照してください。 したがって、基本的には主キーである必要はありませんが、主キーを使用する方がはるかに簡単です。ただし、この主キーは文字列プロパティまたは複数のプロパティにマップできます (複合主キーを参照)。

2) はい、同じです。Country 列は一意の文字列プロパティにマップされていると思います。そのため、エンティティ キーとして使用しても完全に安全です。

3) いいえ、あなたは方法と戦っていません。たとえあなたがそうであったとしても、API の限界と特性を知るために、API と常に少し戦うべきだと思います。

これが役立つことを願っています!

ところで、モデルに新しいエンティティを作成するとき (モデルを右クリックして [新規追加] オプション)、次のように必要なエンティティ キーを選択できます。

ここに画像の説明を入力

于 2013-02-20T13:21:16.347 に答える