我找不到完整的例子。在网格和组合框上找到吨,但不是文本框。此测试是从具有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
---- ---- EDIT
我改变了建议。我还成功地将整个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
答案 0 :(得分:2)
通常,获得此异常有以下两种可能的原因:
1) phonetype 列表为空, FirstOrDefault 方法返回Nothing值。
2) phonetype 列表的第一个元素的 PhoneTypeName 属性具有Nothing值。
为了确保您不会将对象引用设置为未设置为对象的实例异常,我建议您在设置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
答案 1 :(得分:0)
修正了它。
我能够通过使用以下方法查看生成的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)。他说的价值不算什么。