插入或更新 Entity Framework 多对多
Insert or Update Entity Framework Many-to-Many
我正在尝试使用具有以下设计的 Entity Framework 更新连接 table
我正在尝试以下代码,但它没有更新连接 table DeliveryDayBrands,请告诉我我做错了什么。谢谢
public async Task<Brand> Update(Brand brand, IEnumerable<int> SelectedDeliveryDays)
{
using (var dc = DataContext())
{
foreach (int deliveryDayId in SelectedDeliveryDays)
{
DeliveryDay deliveryDay = new DeliveryDay();
deliveryDay = dc.DeliveryDays.FirstOrDefault(d => d.DeliveryDayId == deliveryDayId);
brand.DeliveryDays.Add(deliveryDay);
}
dc.SetModified(brand);
await dc.SaveChangesAsync();
return brand;
}
}
您似乎在尝试向品牌添加一些已经存在的 DeliveryDays。您不需要将其重新添加到数据库中,因为这样做会导致创建重复项。
此外,如 this answer 中所述,DataContext
用于 LINQ to SQL。答案说你需要使用 DbContext
class 与 Entity Framework.
交谈
我建议您尝试从 web.config
(或其他地方)获取数据库的连接字符串,然后尝试以下操作:
public async Task<Brand> Update(Brand brand, IEnumerable<int> SelectedDeliveryDays)
{
using (var context = new DbContext([insert connectionString to database here]))
{
foreach (int deliveryDayId in SelectedDeliveryDays)
{
DeliveryDay deliveryDay = context.DeliveryDays.FirstOrDefault(
d => d.DeliveryDayId == deliveryDayId);
deliveryDay.Brands.Add(brand);
brand.DeliveryDays.Add(deliveryDay)
// You could also use your custom SetModified method.
context.Entry(brand).State = EntityState.Modified;
context.Entry(deliveryDay).State = EntityState.Modified;
}
await context.SaveChangesAsync();
return brand;
}
}
我正在尝试使用具有以下设计的 Entity Framework 更新连接 table
我正在尝试以下代码,但它没有更新连接 table DeliveryDayBrands,请告诉我我做错了什么。谢谢
public async Task<Brand> Update(Brand brand, IEnumerable<int> SelectedDeliveryDays)
{
using (var dc = DataContext())
{
foreach (int deliveryDayId in SelectedDeliveryDays)
{
DeliveryDay deliveryDay = new DeliveryDay();
deliveryDay = dc.DeliveryDays.FirstOrDefault(d => d.DeliveryDayId == deliveryDayId);
brand.DeliveryDays.Add(deliveryDay);
}
dc.SetModified(brand);
await dc.SaveChangesAsync();
return brand;
}
}
您似乎在尝试向品牌添加一些已经存在的 DeliveryDays。您不需要将其重新添加到数据库中,因为这样做会导致创建重复项。
此外,如 this answer 中所述,DataContext
用于 LINQ to SQL。答案说你需要使用 DbContext
class 与 Entity Framework.
我建议您尝试从 web.config
(或其他地方)获取数据库的连接字符串,然后尝试以下操作:
public async Task<Brand> Update(Brand brand, IEnumerable<int> SelectedDeliveryDays)
{
using (var context = new DbContext([insert connectionString to database here]))
{
foreach (int deliveryDayId in SelectedDeliveryDays)
{
DeliveryDay deliveryDay = context.DeliveryDays.FirstOrDefault(
d => d.DeliveryDayId == deliveryDayId);
deliveryDay.Brands.Add(brand);
brand.DeliveryDays.Add(deliveryDay)
// You could also use your custom SetModified method.
context.Entry(brand).State = EntityState.Modified;
context.Entry(deliveryDay).State = EntityState.Modified;
}
await context.SaveChangesAsync();
return brand;
}
}