代码之家  ›  专栏  ›  技术社区  ›  NoCarrier

获取缓存的Linq2SQL计数?

  •  2
  • NoCarrier  · 技术社区  · 16 年前

    我有一个非常简单的数据结构。我正在将SQLExpress与Linq2SQL和vb.net一起使用

    **ParentClass**
    parentId
    name
    
    
    **ChildClass**
    childId
    name
    parentId  (foreign key to parent table)
    

    dbml反映了这两个类,并且有一个单一的关联。

    到目前为止,一切顺利。

    Dim count as Integer = Parent.ChildClasses.Count 
    

    (答案是10,顺便说一句)。它一开始起作用。我加了五张儿童唱片。计数现在应该是15,但读数仍然是10。如果我重建解决方案并重新运行应用程序,它将正确显示15-至少在我开始添加更多记录之前。

    我敢肯定这是我在某个地方犯的一个非常严重的错误。这是一个懒惰加载的功能,还是我找错了方向?

    1 回复  |  直到 16 年前
        1
  •  1
  •   msarchet    15 年前

    您的变量不会神奇地改变,因为上下文中的项数改变了。

    延迟加载指的是,查询是按需要的单位进行计算的,但由于您正在分配一个需要并计算的变量值,因此检查该变量不会导致查询再次运行。

    这样做的一个好方法就是创建一个只读属性,并在每次需要时调用Count

    Public ReadOnly Property Count As Integer
      Get
         Return Parent.ChildClasses.Count
      End Get
    End Property