Linq2SQL计算得到缓存?

时间:2009-09-23 22:30:44

标签: vb.net linq-to-sql

我有一个非常简单的数据结构。我正在使用SqLExpress和Linq2SQL以及vb.net

**ParentClass**
parentId
name


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

dbml反映了这两个类,并且具有oneToMany关联。

到目前为止,非常好。

在我的代码中,我试图获得如下值

Dim count as Integer = Parent.ChildClasses.Count 

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

我很确定这是一个非常糟糕的错误,我正在某个地方。它是延迟加载的函数还是我咆哮错误的树?

1 个答案:

答案 0 :(得分:1)

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

延迟加载是指查询是根据需要进行评估的事实,但由于您正在为变量分配值,因此需要并评估该值,因此检查变量不会导致查询再次运行。

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

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