我找不到一个完整的例子。在网格和组合框上找到吨,但不是文本框。此测试是从具有TypeCode =“0”的UserPhoneType表中查找“PhoneTypeName”,并将该第一个值分配给asp.net文本框。
目前,当我将文本框设置为“phonetype.FirstOrDefault.PhoneTypeName.ToString”时,我得到“对象引用未设置为对象的实例”
Using dbContext As New EntitiesModel()
Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "O")
mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString
End Using
- - 编辑 - -
我改变了建议。我还成功地将整个PhoneTypes列表绑定到一个droplist控件...以确认数据是否可访问。它必须是我在这里查询表中的单个记录的方式。
我得到了相同的错误,但在“Dim type = phonetype.First ...”记录在表中,但它似乎没有用我的代码提取。
Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext1.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode = "M")
Dim type = phonetype.FirstOrDefault
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then
mytextbox.Text = type.PhoneTypeName.ToString
End If
通常,获得此异常有以下两种可能的原因:
1)phonetype列表为空,FirstOrDefault方法返回Nothing值。
2)phonetype列表的第一个元素的PhoneTypeName属性具有Nothing值。
为了确保您不会将Object引用设置为对象异常的实例,我建议您在设置TextBox值之前添加Nothing检查。它可能类似于下面的那个:
Dim type = phonetype.FirstOrDefault
If Object.ReferenceEquals(type, Nothing) = False And Object.ReferenceEquals(type.PhoneTypeName, Nothing) = False Then
mytextbox.Text = type.PhoneTypeName.ToString
End If
固定它。
我能够使用以下方法查看生成的SQL字符串:mytextbox.text = phonetype.tostring
我看到SQL包含“NULL ='O'”
我做的就像这样的例子?!?但是,当我将.ToString添加到被查询的字段时,它起作用了。
所以决赛看起来像这样:
Using dbContext As New EntitiesModel()
Dim phonetype As IEnumerable(Of User_PhoneType) = dbContext.User_PhoneTypes.Where(Function(c) c.PhoneTypeCode.**ToString** = "O")
mytextbox.Text = phonetype.FirstOrDefault.PhoneTypeName.ToString
End Using
BTW,Dimitar指向首先检查null是好建议(+1)。他所说的价值并不算什么。