Vb.net 实体框架:懒散加载似乎是关闭的,尽管它显式地打开了?
看起来,我的模型第一个EF设置并不是延迟加载相关的表记录,尽管显式地打开了它(我知道我不应该这样做,因为它是模型第一) 代码如下:Vb.net 实体框架:懒散加载似乎是关闭的,尽管它显式地打开了?,vb.net,entity-framework-6,Vb.net,Entity Framework 6,看起来,我的模型第一个EF设置并不是延迟加载相关的表记录,尽管显式地打开了它(我知道我不应该这样做,因为它是模型第一) 代码如下: Using db As New Entity() db.Configuration.LazyLoadingEnabled = True Dim objectList as List(Of tableName) = _ db.tableName.Include("relatedTableName") _ .Where
Using db As New Entity()
db.Configuration.LazyLoadingEnabled = True
Dim objectList as List(Of tableName) = _
db.tableName.Include("relatedTableName") _
.Where(Function(x) x.col1 = someValue) _
.OrderBy(Function(x) x.col2).ThenBy(Function(x) x.col3).ToList()
int testVal = 0
For Each item As tableName In objectList
testValue = item.relatedTableName.idColumn
Next
End Using
我得到一个System.NullReferenceException:对象引用未设置为对象的实例。
此行出错:
testValue = item.relatedTableName.idColumn
实际上,item.relatedTableName
也没有值。我已经验证了我应该通过在SQL中编写一个内部连接语句来获取记录
这是怎么回事?显然,如果您使用了错误的导航属性,那么当两个表之间有多个外键时,从一个可空字段到相关表的导航属性就会这样做
也就是说,需要根据需要的数据使用导航属性
relatedTableName
和relatedtableName1
。如果第一个指向一个可空的街道地址列,第二个指向一个不可空的邮政编码列,请指向右边的一个,并期待一个可能的空对象和空列。Include
不是懒惰的,而是急切的加载。这与延迟加载的开/关无关。我知道这是问题发生时代码的当前状态,不会关闭延迟加载,也不会有任何帮助或影响。