我可以将实体关联设为可选或可空吗?

时间:2011-06-17 17:16:00

标签: many-to-many entity associations nullable

我有一个超级英雄。超级英雄可以有很多武器。超级英雄可以有很多车辆。 超级英雄可以将他们的武器附加到车辆上,但他们不应该这样做。

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

在实体框架中,如果我创建武器并将其分配给超级英雄,它也会迫使我将其附加到车辆上(错误如下)。

  1. 这是预期的行为吗?
  2. 超级英雄,武器和车辆之间正确的实体关联映射是什么?
  3. 有什么好的Google搜索词汇可以更好地理解这一点?
  4. 谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:1)

武器和车辆之间的实体框架关系以及超级英雄和武器都已关闭。

你想要让它成为多对多的关系,即。有许多车辆装有许多武器,还有很多武器属于许多车辆。

你可以通过一个映射到武器和车辆以及超级英雄和武器的中间实体来实现这一目标。 看看Many to Many Relationships with EF