插入或更新 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;
    }
}