我在向订单中添加相同的披萨时遇到问题。在代码中,当我调试时一切正常,但是在数据库中,我添加相同的披萨遇到了问题,而数据库仅添加了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();
andofc数据库显示
如何将相同的比萨饼添加到相同的订单中?
答案 0 :(得分:0)
尝试类似的事情。
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。请检查此代码,因为我在编写文本时未检查语法。
答案 1 :(得分:0)
@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();
我的数据库显示:
但是如何获取订单中的所有元素,例如将价格总和成一个订单价格。