2011-06-17 10 views
0

私はスーパーヒーローを持っています。スーパーヒーローは多くの武器を持つことができます。スーパーヒーローは多くの車両を持つことができます。 スーパーヒーローは武器を車両につけることができますが、そうする必要はありません。 Entity Frameworkのでエンティティアソシエーションをオプションにするか、nullにすることはできますか?

http://fm001-forumimages.s3.amazonaws.com/EntityHero.png

私は武器を作成してスーパーヒーローに割り当てた場合、それはまた、車両(以下エラー)にアタッチするために私を強制します。

  1. これは正常な動作ですか?
  2. スーパーヒーロー、ウェポン、ビークルの間の正しいエンティティアソシエーションマッピングは何ですか?
  3. これをよりよく理解するには、Googleの検索フレーズは何ですか?

ありがとう!

答えて

1

車両にスーパーヒーローや武器を武器にたくさんの関係が必要です。これは、次のようなリンクテーブルのペアとして表現される可能性があります。

CREATE TABLE SuperheroWeapons (
    SuperheroId bigint NOT NULL, 
    WeaponId bigint NOT NULL, 
    CONSTRAINT SuperheroWeapons_PK PRIMARY KEY CLUSTERED (SuperheroId ASC, WeaponId ASC), 
    CONSTRAINT SuperheroWeapons_FK_SuperheroId FOREIGN KEY (SuperheroId) REFERENCES Superheros (SuperheroId), 
    CONSTRAINT SuperheroWeapons_FK_WeaponId FOREIGN KEY (WeaponId) REFERENCES Weapons (WeaponId) 
) 

などVehicleWeaponsテーブルと同様です。

1

武器と車両の間のEntityフレームワークの関係は、スーパーヒーローや武器と同様にオフです。

あなたは多対多の関係にしたいと思うでしょう。多くの武器を搭載した車両が多数あり、多くの車両に属する武器も数多くあります。

これは、武器と車両、スーパーヒーローと武器の両方に対応する仲介エンティティで行うことができます。 Many to Many Relationships with EF

+0

を見て、私はあなたの助けがあなたの答えではなかった答えに私を導いたと思いますが、それはそこに私を得ました。外部キーはNullable = Falseであり、これは有効な関連付けを作成せずにデータベースに保存することを妨げた良いことです。だから、私は代替案を考え出す必要があります - 私はForeign Keys Nullable = Trueを設定することはおそらく良い習慣ではないことを知っています。私は常に車両に武器を持たせたくないので、どうやって連合を強制しないのか分かりません。 –

+0

外来キーをnullにすることは、まったく問題ありません。それは実際にそれを行う方法です。そうすることは、「1対多数」の関係から「0対多数」の関係に変わります。 –

関連する問題