我有一个非常简单的数据结构。我正在使用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 - 至少在我开始添加更多记录之前。
我很确定这是一个非常糟糕的错误,我正在某个地方。它是延迟加载的函数还是我咆哮错误的树?
答案 0 :(得分:1)
您的变量不会神奇地改变,因为上下文中的项目数已更改。
延迟加载是指查询是根据需要进行评估的事实,但由于您正在为变量分配值,因此需要并评估该值,因此检查变量不会导致查询再次运行。
这样做的一个好方法就是制作一个只读属性,并在每次需要时调用Count
Public ReadOnly Property Count As Integer
Get
Return Parent.ChildClasses.Count
End Get
End Property