我在添加相同的比萨饼时遇到问题。在代码中,当我调试一切都没问题但是在数据库中我有添加相同披萨和数据库的问题只添加1个相同的披萨。
我的订单类:
public class Order
{
public Order()
{
Sauces = new List<Sauce>();
Pizzas = new List<Pizza>();
}
public int OrderId { get; set; }
public virtual ICollection<Sauce> Sauces { get; set; }
public virtual ICollection<Pizza> Pizzas { get; set; }
}
我有一个方法:
var newOrder = new Order();
var listsauces = new List<Sauce>();
listsauces.Add(ctx.Sauces.Where(x => x.Id == 3).FirstOrDefault());
listsauces.Add(ctx.Sauces.Where(x => x.Id == 3).FirstOrDefault());
newOrder.Sauces = listsauces;
var listPizzas = new List<Pizza>();
listPizzas.Add(ctx.Pizzas.Where(x => x.Id == 1).FirstOrDefault());
listPizzas.Add(ctx.Pizzas.Where(x => x.Id == 2).FirstOrDefault());
listPizzas.Add(ctx.Pizzas.Where(x => x.Id == 1).FirstOrDefault());
newOrder.Pizzas = listPizzas;
ctx.Orders.Add(newOrder);
ctx.SaveChanges();
和ofc数据库显示
如何将相同的披萨添加到同一个订单?
尝试类似的东西。
public class OrderPizzaItem
{
public Pizza Pizza { get; set; }
public int Quantity { get; set; }
}
public class OrderSauceItem
{
public Pizza Pizza { get; set; }
public int Quantity { get; set; }
}
public class Order
{
public Order()
{
Sauces = new List<OrderSauceItem>();
Pizzas = new List<OrderPizzaItem>();
}
public int OrderId { get; set; }
public virtual ICollection<OrderSauceItem> Sauces { get; set; }
public virtual ICollection<OrderPizzaItem> Pizzas { get; set; }
}
var newOrder = new Order();
var listsauces = new List<OrderSauceItem>();
listsauces.Add(new OrderSauceItem { Sauce = ctx.Sauces.Where(x => x.Id == 3).FirstOrDefault(), Quantity = 2});
newOrder.Sauces = listsauces;
var listPizzas = new List<OrderPizzaItem>();
listPizzas.Add(new OrderPizzaItem { Pizza = ctx.Pizzas.Where(x => x.Id == 1).FirstOrDefault(), Quantity = 2});
listPizzas.Add(new OrderPizzaItem { Pizza = ctx.Pizzas.Where(x => x.Id == 2).FirstOrDefault(), Quantity = 1})
newOrder.Pizzas = listPizzas;
ctx.Orders.Add(newOrder);
ctx.SaveChanges();
PS。检查此代码是因为我在不检查语法的情况下编写了文本。
@andercruzbr这是我的dbcontext:
public DbSet<Pizza> Pizzas { get; set; }
public DbSet<Sauce> Sauces { get; set; }
public DbSet<Idgredient> Idgredients { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderSauceItem> OrderSauce { get; set; }
public DbSet<OrderPizzaItem> OrderPizza { get; set; }
public DbSet<PizzaIdgredientItem> PizzaIdgredient { get; set; }
我在数据库中有数据时没关系:
var newOrder = new Order();
var listsauces = new List<OrderSauceItem>();
listsauces.Add(new OrderSauceItem {SauceId = ctx.Sauces.Where(x => x.Id == 3).FirstOrDefault(), Quantity = 1 });
newOrder.Sauces = listsauces;
var listPizzas = new List<OrderPizzaItem>();
listPizzas.Add(new OrderPizzaItem { PizzaId = ctx.Pizzas.Where(x => x.Id == 1).FirstOrDefault(), Quantity = 2 });
listPizzas.Add(new OrderPizzaItem {PizzaId = ctx.Pizzas.Where(x => x.Id == 2).FirstOrDefault(), Quantity = 2 });
newOrder.Pizzas = listPizzas;
ctx.Orders.Add(newOrder);
ctx.SaveChanges();
我的数据库显示:
但是如何获得订单中的所有元素,例如总价格为一个订单价格。