我不确定该问题的标题,这是我正在努力解决的问题。
我有两张桌子,他们之间有多对多关系,战斗和战斗机。战斗机可以在许多战斗中,战斗有许多战士(2战士)。这些映射得很好,但我想要做的是在Fight表中有一个列,我可以在其中设置谁赢得了两个战士之间的战斗。最好的办法是什么?
提前致谢,如果你不明白,我会尝试以更好的方式解释它。
public class Fight
{
[Key]
public int FightId { get; set; }
[Key, ForeignKey("FightCard")]
public int CardId { get; set; }
public virtual ICollection<Fighter> Fighters { get; set; }
}
public class Fighter
{
[Key]
public int FighterID { get; set; }
[Required]
[DisplayName("First Name")]
public string FirstName { get; set; }
[Required]
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("Nickname")]
public string NickName { get; set; }
[Required]
public string Nationality { get; set; }
public static String[] WeightClassOptions
{
get
{
return new String[] { "Heavyweight", "Light Heavyweight", "Middleweight", "Welterweight", "Lightweight", "Featherweight", "Bantamweight", "Flyweight" };
}
}
[DisplayName("Weight Class")]
public string WeightClass { get; set; }
public string Height { get; set; }
[Required]
[DisplayName("Date of Birth")]
[DataType(DataType.Date)]
public DateTime DateOfBirth { get; set; }
// Fight Record:
public int Wins { get; set; }
public int Loss { get; set; }
public int Draw { get; set; }
public int NoContest { get; set; }
public String Picture { get; set; }
public virtual ICollection<Fight> Fight { get; set; }
答案 0 :(得分:1)
您可以创建从Fight
到Fighter
Winner
的一对多关系。
答案 1 :(得分:1)
你应该有一个联结表,用于映射战士和战斗表之间的多对多关系。我们称之为联结表FightersFights
。
在FightersFights
中,您可以添加一列,指示每次加入是赢还是输的。像这样的东西
| Fighters | | FightersFights | | Fights |
------------ ------------------ ----------
| Id | | FighterId | | Id |
| Name | 1 n | FightId | n 1 | Name |
| |---------| Winner |-------------| |
答案 2 :(得分:1)
或者您可以在idWinner
表中添加Fight
,该表是对获胜者的ID的引用,这样可以避免创建另一个表。
您还可以添加一个字段winner
,其中包含1或2,具体取决于哪个战斗机赢了,但这个是凌乱的