private void btnCompositeInsetUpdate_Click(object sender, EventArgs e) { List <Purchase> listPurchase = new List <Purchase>(); string maxId = sqlDal.GetMaxId("RcvNo", "000", "Purchase", "R2018"); { Purchase model = new Purchase(); model.PrdCode = "1001"; model.Qty = 10; //model.ID = ; auto generate model.RcvDate = DateTime.Now; model.RcvNo = maxId; model.TestMoney = 20; model.TestNumeric = 200.5m; listPurchase.Add(model); model = new Purchase(); model.PrdCode = "1002"; model.Qty = 15; //model.ID = ; auto generate //model.RcvDate = DateTime.Now; //for null test //model.TestMoney = 0; // for null test //model.TestNumeric = 0; // for null test model.RcvNo = maxId; listPurchase.Add(model); } Stock model2 = new Stock(); List <Stock> listStock = new List <Stock>(); { model2 = new Stock(); model2.PrdCode = "1001"; model2.RcvQty = 10; model2.BalanceQty = 0; model2.SalesQty = 0; //model.ID = ; auto generate listStock.Add(model2); model2 = new Stock(); model2.PrdCode = "1002"; model2.RcvQty = 15; model2.BalanceQty = 0; model2.SalesQty = 0; //model.ID = ; auto generate listStock.Add(model2); } CompositeModel compositeModel = new CompositeModel(); compositeModel.AddRecordSet <Purchase>(listPurchase, OperationMode.Insert, "Id", "", "", ""); //compositeModel.AddRecordSet<Stock>(listStock, OperationMode.InsertOrUpdaet, "", "PrdCode,+RcvQty", "PrdCode",""); compositeModel.AddRecordSet <Stock>(listStock, OperationMode.InsertOrUpdaet, "", "", "PrdCode,+RcvQty", "PrdCode", ""); string msg = ""; bool r = sqlDal.InsertUpdateComposite(compositeModel, ref msg); if (r) { MessageBox.Show("Success"); } else { MessageBox.Show(msg); } }