2

ASP.NET MVC に関するいくつかのチュートリアル (ここここ) を試してみて、自分でいくつかのことを試すことにしました。Resumeこれで、 、Descriptions、 の3 つのテーブルができましたSubDescriptions。3つのコードは次のとおりです。

public class Resume
{
    public Resume()
    {
        Descriptions = new List<Description>();
    }

    [Key]
    public int ResumeId { get; set; }

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

    [DataType(DataType.Date)]
    public DateTime StartDate { get; set; }

    [DataType(DataType.Date)]
    public DateTime EndDate { get; set; }

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

    [Required]
    public virtual ICollection<Description> Descriptions { get; set; }
}

public class Description
{
    public Description()
    {
        SubDescriptions = new List<SubDescription>();
    }

    [Key]
    public int DescriptionId { get; set; }

    [ForeignKey("Resume")]
    public int ResumeId { get; set; }

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

    public virtual Resume Resume { get; set; }

    public virtual ICollection<SubDescription> SubDescriptions { get; set; }
}

public class SubDescription
{
    [Key]
    public int SubDescriptionId { get; set; }

    [ForeignKey("Description")]
    public int DescriptionId { get; set; }

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

    public virtual Description Description { get; set; }
}

そして、私のSeed()は次のとおりです。

protected override void Seed(ResumeDBContext context)
{
    context.Resumes.AddOrUpdate(i => i.Employer,
                                new Resume
                                    {
                                        Employer = "Employer Test",
                                        StartDate = DateTime.Parse("2012-3-26"),
                                        EndDate = DateTime.Parse("2013-10-24"),
                                        Location = "Houston, TX",
                                        Descriptions = { new Description 
                                                             { Desc = "DescTest",
                                                               SubDescriptions = {new SubDescription {Sub = "SubTest"},
                                                                                  new SubDescription {Sub = "SubTest2"},
                                                                                  new SubDescription {Sub = "SubTest3"}}
                                                             },
                                                         new Description { Desc = "DescTest2" }}
                                    }
                                 );
}

update-databaseこれで、パッケージ マネージャー コンソールから実行すると、実行中と表示されSeed()ます。ただし、データベースにクエリを実行すると、SubDescriptionsテーブルはまだ空です。他のすべては期待どおりに入力されます。エラーなどは表示されません。私は自分の協会で何かばかげたことを見逃していますか?

Resumeテーブルは から適切にSeed()読み込まれ、テーブルDescriptionsにも適切に関連付けられて読み込まれResumeます。それでも、同じ例に従って入力しようとするSubDescriptionsと、テーブルは完全に空になります。関連付けとナビゲーション プロパティは正しく設定されているように見えますが、私はこれが初めてなので、100% 確実ではありません。

4

1 に答える 1

0

さて、私は偶然に答えを見つけました。データベースを削除して再作成したところ、Seed()再度実行すると、すべてのテーブルに必要なデータが入力されました。最初は、変更Seed()が適用されることを期待して、更新を行っていました。しかし、データはテーブルに既に存在していたため、データは取り込まれませんでした。

于 2013-11-07T20:30:12.643 に答える