Ваши сущности не представляют отношения «многие ко многим», используя объединенную таблицу. На самом деле, вы вообще не используете соединительный стол.
Итак, начните с исправления ваших сущностей:
public class Order
{
public int OrderID {get;set;}
public string OrderName {get;set;}
public ICollection<OrderProduct> Products { get; set; } = new HashSet<OrderProduct>();
}
public class Product
{
public int ProductID {get;set;}
public string ProductName {get;set;}
public ICollection<OrderProduct> Orders { get; set; } = new HashSet<OrderProduct>();
}
Новый Order
, который содержит много Product
с, так же прост, как коллекция новых OrderProduct
с:
private void AddOrder(int[] productIDs)
{
Order newOrder = new Order();
newOrder.Name = "New Order";
foreach (int productId in productIDs)
{
newOrder.Products.Add(new OrderProduct { ProductId = productId });
}
_dbContext.Orders.Add(newOrder);
_dbContext.SaveChanges();
}
Также обратите внимание, что SaveChanges
возвращает количество затронутых строк в базе данных, а не идентификатор вставленного элемента.