gpt4 book ai didi

c# - 两个类之间的 Entity Framework 多对多

转载 作者:行者123 更新时间:2023-11-30 16:20:14 26 4
gpt4 key购买 nike

我正在开发一个简单的 MVC 应用程序,它使用 Entity Framework 来跟踪羽毛球联赛的得分。我有以下两个类:

public class Game
{
public int Id { get; set; }
public Player Player1 { get; set; }
public Player Player2 { get; set; }
public int Player1Score { get; set; }
public int Player2Score { get; set; }
}

public class Player
{
public int Id { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public List<Game> Games { get; set; }
}

我遇到的问题是,当我有一个播放器实例时,Games 属性返回一个空列表。当我请求我的玩家列表时,我使用以下内容:-

var players = badmintonDB.Players.Include("Games").ToList();

通过对 SO 的搜索,我试图覆盖 OnModelCreating。我尝试了以下使用和不使用 Map() 的方法。这会在我的数据库中创建另一个表,但它不包含任何记录。

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>().HasMany(p => p.Games).WithMany()
.Map(m =>
{
m.ToTable("PlayerGames");
m.MapLeftKey("Player_Id");
m.MapRightKey("Game_Id");
});

base.OnModelCreating(modelBuilder);

}

我看不出我哪里出错了,我是否需要重新考虑我的 POCO 的设计,或者我在重写 OnModelCreating 时是否有语法错误。

如有任何帮助,我们将不胜感激。

最佳答案

我不确定该设计是否可以按照您希望的方式工作。如果您创建一个新的“分数”实体来将玩家与游戏联系起来会怎样:

public class Game
{
public int Id { get; set; }
public virtual ICollection<Score> Scores { get; set; }
}

public class Player
{
public int Id { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public virtual ICollection<Score> Scores { get; set; }
}

public class Score
{
public int ScoreId { get; set; }
public virtual Player Player { get; set; }
public virtual Game Game { get; set; }
public int Score { get; set; }
}

关于c# - 两个类之间的 Entity Framework 多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com