【发布时间】:2014-07-02 21:06:04
【问题描述】:
我有三张桌子
- 产品 { pid, pname, price }
- 订单 { oid, odate }
- OrderDetails { odid, oid, pid, qty, total }
我有一个表单,它在提交时会传递我想要存储在数据库中的 OrderDetails 数组。但这里的悲剧是我想同时将当前日期存储在 Order 表中。现在我的 Order 表中填充了 odate,但我的 orderdetails 表中没有插入任何内容。我正在使用 web api,并且在控制器中正确获取了数组。我猜这条线
aOrder.AllOrders.Add(od);
在控制器中必须用其他东西替换。
Order.cs
public class Order
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int oid { get; set; }
[DataType(DataType.DateTime)]
public DateTime odate { get; set; }
public virtual List<OrderDetail> AllOrders { get; set; }
public Order()
{
AllOrders = new List<OrderDetail>();
}
}
OrderDetail.cs
public class OrderDetail
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int odid { get; set; }
public int oid { get; set; }
public virtual Order order { get; set; }
public int pid { get; set; }
public int qty { get; set; }
public int total { get; set; }
public virtual Product Aproduct { get; set; }
public OrderDetail()
{
Aproduct = new Product();
}
}
OrderDetailsController.cs
private static readonly IOrderDetailRepository _orders = new OrderDetailRepository();
public Order Post(List<OrderDetail> orderDetails)
{
Order aOrder = new Order();
foreach(OrderDetail orderDetail in orderDetails)
{
OrderDetail od = new OrderDetail();
od.oid = orderDetail.oid;
od.pid = orderDetail.pid;
od.qty = orderDetail.qty;
od.total = orderDetail.total;
aOrder.AllOrders.Add(od);
}
aOrder.odate = DateTime.Now;
return _orders.Add(aOrder);
}
OrderDetailRepository.cs
public Order Add(Order order)
{
_db.Orders.Add(order);
_db.SaveChanges();
return order;
}
【问题讨论】:
标签: entity-framework asp.net-web-api