1

私はEFコードファーストアプローチでMVC 4を使用しています。2 つの単純なオブジェクトがあります。これらは彼らの POCO クラスです:

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 エンティティと Company エンティティの間には多対多の関係があります。リポジトリ クラスで新しいアクティビティを作成していますが、アクティビティに会社を割り当てると、次のようになります。

activity.Companies.Add(company);

NullReference 例外が発生します。私は周りを見回しましたが、このリンクによると:

BuildStarted.com

私のアプローチは正しいようです。

なぜうまくいかないのですか?

4

1 に答える 1

0

Add() off Companies を使用する前に、初期化する必要があります。

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; }
}
于 2012-11-21T15:59:14.487 に答える