C# 使用外键实体框架在方法种子中添加记录

C# 使用外键实体框架在方法种子中添加记录,c#,sql,entity-framework,foreign-keys,seed,C#,Sql,Entity Framework,Foreign Keys,Seed,我想添加带有外键的记录,这样就不会写入数字id protected override void Seed(ClockShopEntities context) { ... } // Seed private void AddType(ClockShopEntities context) { context.Typs.Add(new Typ { typName = "name1" }); context.Typs.Add(new T

我想添加带有外键的记录,这样就不会写入数字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

我希望能得到帮助,Emma

此时您不能通过
Id
添加,因为
国家/地区
尚未插入到数据库中。
您需要做的是将
制造商的
国家/地区
属性设置到正在插入的新
国家/地区
,实体框架本身将负责设置当
制造商
插入数据库时,在
制造商
上的
CountryId

下面的代码应该会给您一些想法:

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
或者,您也可以按名称获取本地国家(尚未添加),并将其分配给
制造商的
国家属性

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

无法将类型“string”隐式转换为类型“bool”。无法将lambda表达式转换为委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型。请检查更新的代码,我在条件中缺少等号。