实体框架一对多,多对一,具有相同的类类型

时间:2015-06-16 01:12:04

标签: c# .net entity-framework

我有一个Game模型,在这个模型中有2个属性,HasDlc和IsDlc

public class Game
{   
    public bool HasDlc { get; set; }
    public virtual ICollection<Dlc> Dlc { get; set; } 

    public bool IsDlc { get; set; }
    public virtual Dlc DlcFor { get; set; }
}

游戏既可以是dlc,也可以是dlc(或者两者都可以是假的,但两者都不可能是真的)。一个游戏可以有很多Dlc,但Dlc只能有一个游戏。

Dlc只是Game对象的另一个实例。因此,如果游戏是DLC,我希望它与Dlc的游戏相关联。如果游戏有Dlc,我想获得组成其Dlc的游戏列表。

需要有一些看起来像这样的Dlc类

public class Dlc
{
    public int Id { get; set; } //this needs to be the id of the game that is dlc

    public int GameId { get; set; } //this needs to be the id that game it is dlc for
    public virtual Game DlcFor { get; set; } //this needs to be the game object it is dlc for
}

我甚至不确定我尝试做的事情是否有意义,我的想法是难以建立联系。任何人都可以帮我解决这个问题,或者至少为我想做的事情提出替代解决方案吗?

1 个答案:

答案 0 :(得分:0)

我只是将dlc信息保存在dlc表中,将该关系定义为一个游戏到多个dlc。

public class Game
{   
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Dlc> Dlcs { get; set; } 
}

public class Dlc
{   
    public int Id { get; set; }
    public string Name { get; set; }
    public int GameId { get; set; }
    public virtual Game game { get; set; } 
}

然后检查游戏是否有dlcs,我们可以检查Dlcs集合是否为空或空。 根据我的理解,dlc通常带有现实世界中的游戏。 (如果我错了,请纠正我。)