繁体   English   中英

包含实体框架中其他模型列表的模型

[英]Model containing a list of other model in 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;}
}

如您所见,我希望我的团队包含一个球员列表。 我的播放器类的定义如下:

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类:

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;}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM