Warning: file_put_contents(/datas/wwwroot/jiajiahui/core/caches/caches_template/2/default/show.php): failed to open stream: Permission denied in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 55

Warning: chmod(): Operation not permitted in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 56
提交更改后循环 - 只保存最后一个记录 - 源码之家

提交更改后循环 - 只保存最后一个记录

问题描述:

下面的代码工作,但它只保存循环中的最后一条记录,我找不到原因。我认为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'..end if''部分处理匹配记录的''else''部分。我误解了linq更新方法吗?我知道数据库是空的,所以问题是添加5个新记录,而不是更新现有的记录。 – Zeus

Dim newChain As New CHAIN 

应内部富勒每个,恰好内部秒。 由于它是在循环外部声明的,它将从表中分离并重新附加到表中。所以它只会插入最后一行。

+0

谢谢,问题解决了!我真的很感谢这个帮助:-) – Zeus

+0

这样可以解决你总是插入记录时的问题,但是如果你试图更新现有的记录,它将无法正常工作。 – sgmoore