2015-06-12 4 views
1

У меня есть таблица TransactionUpdate с колоннами TransactionUpdateId, OrderNumber, BalanceAmount, TotalOrderAmount, LinkToCustomerMasterId, LinkToLocationId, LastUpdateDateКак вставить данные в таблицу в LINQ к SQL

я хочу, чтобы вставить данные в TransactionUpdate

Я пробовал это. но только после ввода данных. после того, что данные не будут вставлены в таблицу

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 для SQL, clsFranchise является файл класса.

+0

Вы упоминаете данные «один раз», это означает: первые данные или первый раз? –

+0

первый раз. видеть. если мой стол пуст. и я добавлю одну запись. то вставка работает. но если я попытаюсь вставить другое время, таблица не меняется. если я снова удалю, что первые данные (строка) и вставить, он будет вставляться. и затем я вставляю, никакая вставка не будет выполнять @ NhânNguyễn –

+0

, поэтому короче только первый раз, когда она вставлена. не второй раз. если я очищу таблицу, тогда я вставлю, это означает, что это будут первые данные. поэтому он будет вставлен. но после этого никакая вставка не будет выполнять @ NhânNguyễn –

ответ

2

Вы не установили TransactionUpdateId, когда вы вставляете запись.

Так по умолчанию (если это целое число), то он принимает TransactionUpdateId = 0. Так вот, когда вы добавляете 1-запись в таблицу, запись добавляется с первичным ключом 0. Но когда ваш пытаются 2 раза , первичный ключ не позволяет ввести 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; 

для 2-й способ: изменить ниже функции:

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; 
      } 
     } 

Пожалуйста, дайте мне знать, что это работает для вас ?

+0

безупречный ..! Благодаря :) –

Смежные вопросы