2016-02-10 3 views
0

Следующий код работает, но он сохраняет только последнюю запись в цикле, и я не могу понять, почему. Я думаю, что Submitchanges() находится в нужном месте, в конце цикла. Может кто-нибудь, пожалуйста, покажите мне, что случилось? Благодарю.Подчинки после цикла - сохранена только последняя запись

Sub POPULATE_CHAIN() 

    Dim newChain As New CHAIN 
    Dim dpSTRIKE As Integer 

    'get list of Options Contracts 
    Dim lstOPT = From Z In DATA.OPTIONs, X In DATA.UDLies 
       Where X.UDLY_SYM = Z.UDLY_SYM 
       Select Z.CONTRACT, Z.STRIKE_GAP, X.UDLY_LAST 

    Dim dctOPT = lstOPT.ToDictionary(Function(Z) Z.CONTRACT) 

    For Each key In dctOPT.Keys 

     For COUNT = 1 To 5 
      dpSTRIKE = 1850 + 5 * COUNT 
      Dim lkup = From Z In DATA.CHAINs 
         Select Z 
      Dim RCD_EXISTS As Boolean = lkup.Any(Function(Z) Z.CONTRACT = dctOPT(key).CONTRACT And Z.P_C = "C" And Z.STRIKE = dpSTRIKE) 

      If RCD_EXISTS = False Then 
       newChain.CONTRACT = dctOPT(key).CONTRACT 
       newChain.P_C = "C" 
       newChain.STRIKE = dpSTRIKE 
       DATA.CHAINs.InsertOnSubmit(newChain) 
      Else 
       newChain.CONTRACT = dctOPT(key).CONTRACT 
       newChain.P_C = "C" 
       newChain.STRIKE = dpSTRIKE 
      End If 

     Next 
    Next 
    DATA.SubmitChanges() 
End Sub 
+0

Если вы не указываете newChain на существующую запись, если есть совпадение. На данный момент ваш код использует Any, чтобы определить, есть ли совпадение, но ничего не делает с соответствующей записью. – sgmoore

+0

Tks, но я подумал, что '' else '' часть '' if..else..end if'' обрабатывается соответствующими записями. Не понял ли я метод обновления linq? Я знаю, что db пуст, поэтому проблема заключается в добавлении 5 новых записей, а не в обновление существующего. – Zeus

ответ

1
Dim newChain As New CHAIN 

должен быть внутри каждого Фор, ровно в секунду. Поскольку он объявлен вне цикла, он будет отсоединен от таблицы и снова привязан к таблице. Поэтому он будет вставлен только в последнюю строку.

+0

Спасибо, проблема решена! Я очень ценю помощь :-) – Zeus

+0

Это решает вашу проблему в случае, когда вы всегда вставляете записи, но это не сработает, если вы пытаетесь обновить существующие записи. – sgmoore

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