0
我在我的數據庫中有兩個表,我通過Web API填充:插入數據到多個表中使用實體框架
Orders
________
OrderID
OrderDate
OrderStatusID
和
OrderItems
___________
OrderID
ItemID
ItemVersionID
ItemNote
ItemSortOrder
我需要插入Order
和所有項目在兩張桌子的訂單。 OrderID
是數據庫生成的標識字段,我需要將數據插入到OrderItems
表中。
OrderItems
表的主鍵是一個組合鍵,因爲相同的順序可以包含具有相同ID但具有不同版本ID的多個項目,這一點很重要。
我想知道是否需要單獨添加Order
和OrderItems
數據,或者可以在單個控制器功能中添加數據。
下面是我的模型類:
[Table("SN_Orders")]
public class Order
{
[Key]
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public int OrderStatusID { get; set; }
public List<OrderItem> Details { get; set; }
}
[Table("SN_OrderItems")]
public class OrderItem
{
[Column(Order = 0), Key]
public int ItemID { get; set; }
[Column(Order = 1), Key]
public int ItemVersionID { get; set; }
[Column(Order = 2), Key]
public int OrderID { get; set; }
public string ItemNote { get; set; }
public int ItemSortOrder { get; set; }
}
而下面是我嘗試在OrderItems
名單通過與Order
沒有工作了:
[HttpPost]
public IHttpActionResult PostItemToOrder(myClass.Order ord1, List<myClass.OrderItem> itemList)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (MyContext ctx = new MyContext())
{
ctx.Orders.Add(ord1);
ctx.SaveChanges();
foreach (var item in itemList)
{
item.OrderID=ord1.OrderId;
ctx.OrderItems.Add(item);
ctx.SaveChanges();
}
}
}
是,東西是可能的立即完成?或者我必須先插入訂單,將OrderID
返回給調用程序,然後插入項目?
謝謝你的快速響應!我已更改'公開名單詳細信息{get;組; } to'public ICollection Details {get;組; }'並根據您的建議修改了控制器代碼,但它仍然無效。可以使用'virtual'關鍵字在Order模型聲明中有所作爲? –
ElenaDBA
在你的'OrderItem'類中你有'public virtual order {get;組; }'?上面的代碼應該沒有問題。 List itemList'列表中有什麼? –
不,我沒有'公共虛擬Order Order {get;組; }'設置 – ElenaDBA