9

Entity Framework とコードを最初に使用して、ASP.NET Web アプリにデータをシードしようとしています。このコードをSeed()Configuration.cs ファイルのメソッドに配置しています。現在、ソリューションの住所の側面に取り組んでおり、すべての州と郡をシステムにロードしようとしています。

これが状態の私のコードで、うまく機能しています...

context.StateProvinces.AddOrUpdate(
    p => p.Abbreviation,
    new StateProvince { Abbreviation = "AL", Name = "Alabama" },
    new StateProvince { Abbreviation = "AK", Name = "Alaska" },
    new StateProvince { Abbreviation = "AZ", Name = "Arizona" },
    ....
);

AddOrUpdate()関数 forを使用するにはどうすればよいcontext.Countiesですか? これが私のCountyオブジェクトの外観です。

public class County
{
    public int CountyId { get; set; }
    public int StateProvinceId { get; set; }
    public String Name { get; set; }

    [ForeignKey("StateProvinceId")]
    public virtual StateProvince StateProvince { get; set; }
}

私が州で行ったフォーマットを単純に複製することはできますが、国全体で郡名が再利用されていることがわかっています。したがってc => c.Name、既存のチェックとして単純に使用することはできません。name と StateProvinceId フィールドを使用できますか?

4

2 に答える 2

8

逆に行うのではなく、州に郡を追加してみませんか?

それができない場合は、次のように変更できます。

var al = new StateProvince { Abbreviation = "AL", Name = "Alabama" },
var ak = new StateProvince { Abbreviation = "AK", Name = "Alaska" },
var ar = new StateProvince { Abbreviation = "AZ", Name = "Arizona" },

context.StateProvinces.AddOrUpdate(
    p => p.Abbreviation,
    al,
    ak,
    ar
);

context.SaveChanges();

context.Counties.Add(new County() { Name = "Something", StateProvince = al });

// DONT CALL SAVE, Initializer needs something to do or it complains
于 2013-07-19T21:29:55.607 に答える