如何为Ont-to-Many关系创建Web API POST方法?

时间:2017-03-20 11:34:46

标签: post asp.net-web-api

我正在为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以同时创建数据?

1 个答案:

答案 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方法中的表。