如何在 linq to sql 中将数据插入 table

How to insert data into table in linq to sql

我有一个 table TransactionUpdateTransactionUpdateId, OrderNumber,BalanceAmount,TotalOrderAmount,LinkToCustomerMasterId,LinkToLocationId,LastUpdateDate

我想插入数据到TransactionUpdate

这个我试过了。但只有一次数据被插入。之后数据未插入 table

TransactionUpdate objTransaction = new TransactionUpdate();
     objTransaction.OrderNumber = objBooking.OrderNumber;
                            objTransaction.BalanceAmount = 0;
                            objTransaction.OrderTotalAmt = objBooking.TotalOrderAmt;
                            objTransaction.LinkToCustomerMasterId = objBooking.LinkCustomerMasterId;
                            objTransaction.LinkToLocationId = objBooking.LinktoLocationMasterId;
                            objTransaction.OrderType = "Send booking";
                            objTransaction.LastUpdaeDate = DateTime.Now;

                            int AddCOD = clsFranchies.AddCODCustomerOrderTransaction(objTransaction); 

方法:AddCODCustomerOrderTransaction

public static int AddCODCustomerOrderTransaction(TransactionUpdate transaction)
        {
            try
            {
                using (WMSDataContext dc = new WMSDataContext())
                {
                    TransactionUpdate objtransactionAddCOD = new TransactionUpdate();
                    objtransactionAddCOD = transaction;
                    dc.TransactionUpdates.InsertOnSubmit(objtransactionAddCOD);
                    dc.SubmitChanges();
                    return 1;
                }
            }
            catch (Exception ex)
            {
                clsError.WriteError(ex);
                return -1;
            }
        }

我正在使用 Linq to sqlclsFranchise 是 class 文件.

您在插入记录时没有设置TransactionUpdateId。

所以默认情况下(如果它是一个整数)则它采用 TransactionUpdateId = 0。 所以在这里,当您将第一个条目添加到 table 时,将使用主键 0 添加记录。 但是,当您尝试 2 次时,主键不允许您输入具有重复主键值 0 的第二条记录。

You can resolve this issue by 2 ways:
1) Set primary key to auto increment.
2) While inserting record set primary key value to new value. Like newValue = Max(TransactionUpdateId ) + 1;

对于第二种方式:修改以下函数:

public static int AddCODCustomerOrderTransaction(TransactionUpdate transaction)
        {
            try
            {
                using (WMSDataContext dc = new WMSDataContext())
                {
                    TransactionUpdate objtransactionAddCOD = new TransactionUpdate();
                    objtransactionAddCOD = transaction;

            var newTransactionUpdateID = dc.TransactionUpdates.Max(s = >s.TransactionUpdateId);

            objtransactionAddCOD.TransactionUpdateId = newTransactionUpdateID == null ? 1: (newTransactionUpdateID + 1);
                    dc.TransactionUpdates.InsertOnSubmit(objtransactionAddCOD);
                    dc.SubmitChanges();
                    return 1;
                }
            }
            catch (Exception ex)
            {
                clsError.WriteError(ex);
                return -1;
            }
        }

请告诉我这对你有用吗?