2015-12-20 192 views
0

這個問題可能看起來微不足道,但在過去的幾天裏,我真的一直在拉我的頭髮。 我正嘗試使用實體框架創建一對多關係。 我有兩個模型。第一種模式是團隊:實體框架中包含其他模型列表的模型

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

必須有一個錯誤的地方(甚至在主體本身),因爲即使當應用程序運行時,一切似乎都奏效,第二次運行應用程序時,我能夠從數據庫中檢索除團隊玩家以外的所有內容列表(基本上爲空)。

我很感激任何幫助,我真的無望。 非常感謝。

回答

2

您必須製作複雜類型屬性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;} 
} 
+0

謝謝!這是一種魅力! – user3497668

+0

@ user3497668隨時!!! –