C# 使用外键实体框架在方法种子中添加记录
我想添加带有外键的记录,这样就不会写入数字idC# 使用外键实体框架在方法种子中添加记录,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
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表达式转换为委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型。请检查更新的代码,我在条件中缺少等号。