使用外键在方法 Seed 中添加记录 Entity Framework

Add record in method Seed with foreign key Entity Framework

我想用外键添加记录,以免写数字id。

    protected override void Seed(ClockShopEntities context)
    { ... } // Seed

    private void AddType(ClockShopEntities context)
    {
        context.Typs.Add(new Typ { typName = "name1" });
        context.Typs.Add(new Typ { typName = "name2" });
    } // AddType

    private void AddCountry(ClockShopEntities context)
    {
        context.Countries.Add(new Country { countryName = "country1" });
        context.Countries.Add(new Country { countryName = "country2" });
        context.Countries.Add(new Country { countryName = "country3" });
        context.Countries.Add(new Country { countryName = "country4" });
    } // AddCountry

如何通过指定名称添加值?

    // !!!!! with write id
    private void AddFabricator(ClockShopEntities context)
    {
        context.Fabricators.Add(new Fabricator { fName = "", idCountry = 1 });
    } // AddFabricator


    // How can I write without Id
    private void AddFabricator(ClockShopEntities context)
    {
        context.Fabricators.Add(
          new Fabricator { fName = "", idCountry = ?? where Country = "country1" });
    } // AddFabricator

艾玛,希望得到帮助

此时您无法通过 Id 添加,因为 Country 尚未插入数据库。 您需要做的是将 FabricatorCountry 属性 设置为插入的新 Country,entity framework 本身会负责在 [=15] 上设置 CountryId =] 当 Fabricator 插入数据库时​​。

下面这段代码应该能给你一些想法:

private void AddCountry(ClockShopEntities context)
{
    var country1 = new Country { countryName = "country1" };
    AddFabricator(context, country1);
    context.Countries.Add(country1);

    context.Countries.Add(new Country { countryName = "country2" });
    context.Countries.Add(new Country { countryName = "country3" });
    context.Countries.Add(new Country { countryName = "country4" });
} // AddCountry

private void AddFabricator(ClockShopEntities context, Country country)
{
    context.Fabricators.Add(new Fabricator { fName = "", Country = country });
} // AddFabricator

或者,您也可以通过名称获取本地国家(尚未添加)并将其分配给 Country 属性 of Fabricator

private void AddFabricator(ClockShopEntities context)
{
    context.Fabricators.Add(new Fabricator { fName = "", Country = context.Countries.First(c => c.countryName == "country1") });
} // AddFabricator