0

我不完全确定这个问题的标题是什么,这是我要解决的问题。

我有两张表,它们之间存在多对多关系,Fight 和 Fighter。一个战士可以参加很多战斗,一个战斗有很多战士(2个战士)。这些映射得很好,但我想做的是在战斗表中有一个列,我可以在其中设置谁赢得了两个战士之间的战斗。最好的方法是什么?

在此先感谢您,如果您不明白,我会尝试以更好的方式进行解释。

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; }
4

3 回答 3

1

Fight您可以创建从到Fighter被调用的一对多关系Winner

于 2013-01-24T23:42:51.350 回答
1

您应该有一个连接表来映射 Fighters 和 Fights 表之间的多对多关系。我们称这个联结表FightersFights

FightersFights中,您可以添加一列,指示每个加入的战斗是赢还是输。像这样的东西

| Fighters |         | FightersFights |             | Fights |
------------         ------------------             ----------
| Id       |         | FighterId      |             | Id     |
| Name     | 1     n | FightId        | n         1 | Name   |
|          |---------| Winner         |-------------|        |
于 2013-01-24T23:43:17.870 回答
1

或者,您可以idWinner在表中添加一个对Fight获胜者的 id 的引用,这样可以避免创建另一个表。您还可以添加一个winner包含 1 或 2 的字段,具体取决于哪个战斗机获胜,但这很混乱

于 2013-01-24T23:45:52.000 回答