包含 Entity Framework 中其他模型列表的模型
Model containing a list of other model in Entity Framework
这个问题可能看起来微不足道,但在过去的几天里我真的一直在努力解决这个问题。
我正在尝试使用 Entity Framework 创建一对多关系。
我有两个模型。第一个模型是团队:
public class Team
{
public int TeamId {get;set;}
public string TeamName {get;set;}
public string SportType {get;set;}
public List<Player> Players {get;set;}
}
如您所见,我希望我的团队包含一个玩家列表。我的播放器 class 是这样定义的:
public class Player
{
public int PlayerId {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public double Salary {get;set;}
public string Gender {get;set;}
[ForeignKey("TeamId")]
public Team Team {get;set;}
}
那是我的 dbcontext class:
public class TeamDbContext : DbContext
{
public DbSet<Team> Teams {get;set;}
public DbSet<Player> Players {get;set;}
protected override void OnModelCreating(DbModelCreator modelBuilder)
{
modelBuilder.Entity<Player>().HasRequired<Team>(p => p.Team).WithMany(t => t.Players).HasForeignKey(p => p.TeamId);
}
public TeamDbContext() : base("TeamDb")
{
}
}
这是我的主要内容:
static void Main(string[] args)
{
TeamDbContext db = new TeamDbContext();
// Create a new Player
Player Ben = new Player() {Name = "Ben", Age = 10};
db.Players.Add(Ben);
db.SaveChanges();
// Create a new Team
Team LosVegasTeam = new Team() {TeamName = "LosVegas", SportType = "Soccer"};
LosVegasTeam.Players = new List<Player> {Ben};
db.Teams.Add(LosVegasTeam);
db.SaveChanges();
}
一定是某处有错误(甚至可能在主程序本身),因为即使当应用程序 运行 一切似乎都正常时,我第二次 运行 应用程序我是能够从数据库中检索除团队球员列表之外的所有内容(它基本上是空的)。
非常感谢任何帮助,我真的很绝望。
非常感谢。
您必须制作复杂类型属性 virtual
才能启用 延迟加载。
public class Team
{
public int TeamId {get;set;}
public string TeamName {get;set;}
public string SportType {get;set;}
public virtual List<Player> Players {get;set;}
}
public class Player
{
public int PlayerId {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public double Salary {get;set;}
public string Gender {get;set;}
[ForeignKey("TeamId")]
public virtual Team Team {get;set;}
}
这个问题可能看起来微不足道,但在过去的几天里我真的一直在努力解决这个问题。 我正在尝试使用 Entity Framework 创建一对多关系。 我有两个模型。第一个模型是团队:
public class Team
{
public int TeamId {get;set;}
public string TeamName {get;set;}
public string SportType {get;set;}
public List<Player> Players {get;set;}
}
如您所见,我希望我的团队包含一个玩家列表。我的播放器 class 是这样定义的:
public class Player
{
public int PlayerId {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public double Salary {get;set;}
public string Gender {get;set;}
[ForeignKey("TeamId")]
public Team Team {get;set;}
}
那是我的 dbcontext class:
public class TeamDbContext : DbContext
{
public DbSet<Team> Teams {get;set;}
public DbSet<Player> Players {get;set;}
protected override void OnModelCreating(DbModelCreator modelBuilder)
{
modelBuilder.Entity<Player>().HasRequired<Team>(p => p.Team).WithMany(t => t.Players).HasForeignKey(p => p.TeamId);
}
public TeamDbContext() : base("TeamDb")
{
}
}
这是我的主要内容:
static void Main(string[] args)
{
TeamDbContext db = new TeamDbContext();
// Create a new Player
Player Ben = new Player() {Name = "Ben", Age = 10};
db.Players.Add(Ben);
db.SaveChanges();
// Create a new Team
Team LosVegasTeam = new Team() {TeamName = "LosVegas", SportType = "Soccer"};
LosVegasTeam.Players = new List<Player> {Ben};
db.Teams.Add(LosVegasTeam);
db.SaveChanges();
}
一定是某处有错误(甚至可能在主程序本身),因为即使当应用程序 运行 一切似乎都正常时,我第二次 运行 应用程序我是能够从数据库中检索除团队球员列表之外的所有内容(它基本上是空的)。
非常感谢任何帮助,我真的很绝望。 非常感谢。
您必须制作复杂类型属性 virtual
才能启用 延迟加载。
public class Team
{
public int TeamId {get;set;}
public string TeamName {get;set;}
public string SportType {get;set;}
public virtual List<Player> Players {get;set;}
}
public class Player
{
public int PlayerId {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public double Salary {get;set;}
public string Gender {get;set;}
[ForeignKey("TeamId")]
public virtual Team Team {get;set;}
}