2012-11-21 49 views
1

我正在使用帶有EF代碼第一種方法的MVC 4。我有兩個簡單的對象。這些是他們的POCO類別:在MVC中創建具有多對多關係的對象4

public class Activity 
{ 
     //Primitive Properties 
     [HiddenInput] 
     public int Id { get; set; } 

     [Required] 
     public int LengthInMinutes { get; set; } 

     public string AdditionalInfo { get; set; } 

     [Required] 
     public bool Archive { get; set; } 

     //Navigation Properties 
     public virtual User User { get; set; } 
     public virtual ActivitySet ActivitySet { get; set; } 
     public virtual ICollection<Company> Companies { get; set; } 
     public virtual ICollection<Description> Descriptions { get; set; } 
} 

public class Company 
{ 
     //Primitive Properties 
     [HiddenInput] 
     public int Id { get; set; } 

     [Required] 
     public string Title { get; set; } 

     [Required] 
     public bool Archive { get; set; } 

     //Navigation Properties 
     public virtual ICollection<Activity> Activities { get; set; } 
} 

因此,活動和公司實體之間存在多對多關係。我在我的倉庫類創建新的活動,但是當我分配一個公司的活動,像這樣:

activity.Companies.Add(company); 

我得到NullReference例外。我環顧四周,但根據此鏈接:

BuildStarted.com

我的做法似乎是正確的。

它爲什麼不工作?

回答

0

在您可以使用公司的Add()之前,它需要被初始化。

activity.Companies = new List<Company>(); 

你也可以在Activity的構造函數中初始化它。

public class Activity 
{ 
    public Activity() 
    { 
     Companies = new List<Company>(); 
     Descriptions = new List<Description>(); 
    } 

    //Primitive Properties 
    [HiddenInput] 
    public int Id { get; set; } 

    [Required] 
    public int LengthInMinutes { get; set; } 

    public string AdditionalInfo { get; set; } 

    [Required] 
    public bool Archive { get; set; } 

    //Navigation Properties 
    public virtual User User { get; set; } 
    public virtual ActivitySet ActivitySet { get; set; } 
    public virtual ICollection<Company> Companies { get; set; } 
    public virtual ICollection<Description> Descriptions { get; set; } 
} 
+0

太棒了,非常感謝! – Bartosz