如何一次将新数据插入两个表?
问题描述:
我正在谈论的两张桌子由哪个ID链接,即Order.Order_ID和Order_Item.Order_ID
i尝试在互联网上做很多解决方案而不是似乎工作。我的代码只是将所有数据插入到这两个表中,但是需要这两个表格才能获得
! Order_Item.Order_ID仍为空。任何人都可以帮忙。
PS。 Order.Order_ID是身份规范,因此只有在插入数据时才会获取id。
这是我的代码
The two table i am talking abour linked by there ID which is Order.Order_ID and Order_Item.Order_ID
i try to do many solution in the internet and it not seem to work. my code just insert all the data i
need into that two table but ! Order_Item.Order_ID is still null. can anyone help please.
PS. the Order.Order_ID is identity specification so it will get the id only when the data is insert.
Here is MY Code
private void addReceiptCommandClick(object obj)
{
Order neworder = new Order();
neworder.A_ID = admin_Name.A_ID;
neworder.O_Date = o_Date;
neworder.Order_ShowName = order_ShowID;
neworder.Order_Price = order_NetPrice;
neworder.O_Status = Status.StatusX;
Context.Add(neworder);
//selectedsupplier = Context.Suppliers.Where(S => S.Sup_Name == sup_Name).FirstOrDefault();
neworder.Sup_ID = s_Name.Sup_ID;
Context.Add(neworder);
//Context.SaveChanges();
foreach (Order_Item item in Order_Item)
{
item.O_ID = neworder.Order_ID;
selectedproduct = Context.Products.Where(Pro => Pro.P_ShowID == item.P_Code).FirstOrDefault();
Lot_Stock newlot = new Lot_Stock();
newlot.Lot_Name = item.Lot_Code;
newlot.Price = item.Price;
newlot.Date = o_Date;
newlot.Quantity = item.Quantity;
neworder.Order_Items.Add(item);
//newdetail.Order_ID = neworder.Order_ID;
}
Context.SaveChanges();
}
答
考虑你制作没有价值的item.O_ID = neworder.Order_ID,
如果neworder.Order_ID是Identity,你必须在将它的值分配给OrderItem之前得到它
private void addReceiptCommandClick(object obj)
$
订购neworder = new Order();
neworder.Order_ID = Context.Order.Max ()。ID + 1; //如果列不是标识,则获取值
neworder.A_ID = admin_Name.A_ID;
neworder.O_Date = o_Date;
neworder.Order_ShowName = order_ShowID;
neworder.Order_Price = order_NetPrice;
neworder.O_Status = Status.StatusX;
Context.Add(neworder);
// selectedsupplier = Context.Suppliers.Where(S => S.Sup_Name == sup_Name).FirstOrDefault();
neworder.Sup_ID = s_Name.Sup_ID;
Context.Add(neworder);
//Context.SaveChanges();
foreach(Order_Item中的Order_Item项目)
{
item.O_ID = neworder.Order_ID;
selectedproduct = Context.Products.Where(Pro => Pro.P_ShowID == item.P_Code).FirstOrDefault();
Lot_Stock newlot = new Lot_Stock();
newlot.Lot_Name = item.Lot_Code;
newlot.Price = item.Price;
newlot.Date = o_Date;
newlot.Quantity = item.Quantity;
neworder.Order_Items.Add(item);
//newdetail.Order_ID = neworder.Order_ID;
}
Context.SaveChanges();
}
Consider that you make item.O_ID = neworder.Order_ID which has no value assinged ,
if neworder.Order_ID is Identity you have to get it before assigning it's value to OrderItem
private void addReceiptCommandClick(object obj)
{
Order neworder = new Order();
neworder.Order_ID = Context.Order.Max().ID+1; // will get the value if column is not identity
neworder.A_ID = admin_Name.A_ID;
neworder.O_Date = o_Date;
neworder.Order_ShowName = order_ShowID;
neworder.Order_Price = order_NetPrice;
neworder.O_Status = Status.StatusX;
Context.Add(neworder);
//selectedsupplier = Context.Suppliers.Where(S => S.Sup_Name == sup_Name).FirstOrDefault();
neworder.Sup_ID = s_Name.Sup_ID;
Context.Add(neworder);
//Context.SaveChanges();
foreach (Order_Item item in Order_Item)
{
item.O_ID = neworder.Order_ID;
selectedproduct = Context.Products.Where(Pro => Pro.P_ShowID == item.P_Code).FirstOrDefault();
Lot_Stock newlot = new Lot_Stock();
newlot.Lot_Name = item.Lot_Code;
newlot.Price = item.Price;
newlot.Date = o_Date;
newlot.Quantity = item.Quantity;
neworder.Order_Items.Add(item);
//newdetail.Order_ID = neworder.Order_ID;
}
Context.SaveChanges();
}