我有一个项目,我正在建立域类和相关实体框架代码的第一个数据库,并且我挑战了如何建模具有多对多关系的实体。以下是最高级别的实体。
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。有没有人对如何简化这个领域模型有任何想法?