我正在为Order创建Web API。 其中我创建了两个表
1)Tbl_Order有列 -
Order_ID -Primary Key,
Employee_ID,
TotalBill,
2)Tbl_OrderMenu有列 -
OrderMenuID -Primary Key,
Order_ID -Foreign Key from Tbl_Order,
MenuName,
Quantity
表之间的关系是一对多,即Tbl_Order(1)-to-Tbl_OrderMenu(*或Many)。
如何创建用于POST方法的Web API以同时创建数据?
答案 0 :(得分:0)
在这种情况下,请先查看您需要将数据添加到 Tbl_Order 表。然后,您可以通过从第一个表中获取Order_ID,向 Tbl_OrderMenu 表添加任意数量的数据。希望你明白这一点。
创建一个应包含该表的类。例如,
public class myCombinedClass
{
public int Order_ID {get;set;}
public int Employee_ID {get;set;}
public string TotalBill {get;set;}
public List<Tbl_OrderMenu> OrderMenu { get; set; }
}
在您的API控制器方法中,您可以这样写,
[HttpPost]
public HttpResponseMessage Post(myCombinedClass myData)
{
if(myData.id == 0)
{
// This is a new entry to Tbl_Order.
Tbl_Order orderObject = new Tbl_Order();
orderObject.Employee_ID = myData.Employee_ID;
orderObject.TotalBill = myData.TotalBill;
_ctx.Tbl_Order.Add(orderObject);
_ctx.SaveChanges();
}
else
{
//You just need to update the Tbl_Order. I mean, here you are adding
//data to Tbl_OrderMenu table with Order_ID.
var OrderMenuData = _ctx.Tbl_OrderMenu.where(m=>m.Order_ID ==
myData.id).FirstOrDefault();
OrderMenuData.Order_ID = myData.id;
OrderMenuData.MenuName = myData.OrderMenu.MenuName;
OrderMenuData.Quantity = myData.OrderMenu.Quantity;
_ctx.Entry(OrderMenuData).State=System.Data.Entity.EntityState.Modified;
_ctx.SaveChanges();
}
}
注意:请参阅此处,_ctx是您需要在此控制器/方法中添加的上下文类。
Ex: MyDBContext _ctx = new MyDBContext();
我写了一个像here一样的答案。通过那个。检查我如何将数据传递到ajax方法中的表。