实体框架与其他属性和关系的多对多关系

时间:2017-02-07 14:45:30

标签: c# .net entity-framework asp.net-core domain-driven-design

我有一个项目,我正在建立域类和相关实体框架代码的第一个数据库,并且我挑战了如何建模具有多对多关系的实体。以下是最高级别的实体。

Game.cs实体

public class Game
{
    public Guid Id { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public virtual ICollection<GameTeam> Teams { get; set; } 
}

Team.cs实体

public class Team
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string JerseyColor { get; set; }
    public string Division { get; set; }
    public string League { get; set; }
    public virtual ICollection<GameTeam> Games { get; set; }
}

一个游戏可以有很多团队,一个团队可以拥有许多游戏,这些游戏中存在属性,因此我有一个GameTeam实体来保留这些属性。

GameTeam.cs实体

public class GameTeam
{
    [Key, Column(Order = 0)]
    public Guid GameId { get; set; }
    [Key, Column(Order = 1)]
    public Guid TeamId { get; set; }
    public virtual Game Game { get; set; }
    public virtual Team Team { get; set; }
    public virtual Lineup Lineup { get; set; }
}

我相信这是正确的设置,但现在我需要建模一个属性,它本身就是另一个域对象,比如阵容。我如何构建它的域类,以便它与GameTeam对象有关系,我是否有一个主键,它有自己的Guid,然后是一个外键返回到由GameId组成的实体和TeamId?我觉得这个结构开始变得笨拙,因为我想在任何时候想要添加更多关系时都要处理这两个ID。有没有人对如何简化这个领域模型有任何想法?

0 个答案:

没有答案