如何一次将新数据插入两个表?

问题描述:

我正在谈论的两张桌子由哪个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();
}