Vb.net 仅当db结果不为空时创建对象实例

Vb.net 仅当db结果不为空时创建对象实例,vb.net,Vb.net,谈到.net,我是个新手,这让我很难尽可能有效地处理它 我正在通过实体框架检索大量记录,然后创建一个问题对象的多个实例,这些实例被添加到一个可观察的集合中 issue对象中有一个名为assignedto的子类,它只包含一个整数和一个字符串。但是,数据库中的assignedTo记录并不总是完整的,即实体框架不返回任何正确的内容: Public Sub LoadIssueData(ByRef parIssueItems As ObservableCollection(Of Issue))

谈到.net,我是个新手,这让我很难尽可能有效地处理它

我正在通过实体框架检索大量记录,然后创建一个问题对象的多个实例,这些实例被添加到一个可观察的集合中

issue对象中有一个名为assignedto的子类,它只包含一个整数和一个字符串。但是,数据库中的assignedTo记录并不总是完整的,即实体框架不返回任何正确的内容:

    Public Sub LoadIssueData(ByRef parIssueItems As ObservableCollection(Of Issue))


        Using db As New pResolveConnection
            Dim dbIssueList As New List(Of String)
            Try
                Dim qry = From a In db.vCurrentLogs
                          Where a.statusID <> constClosedIssueStatus
                          Select a
                          Order By a.createdDate Descending


                For Each res In qry
                    dbIssueList.Add(res.ID)
                    Dim issueIndex As Integer
                    issueIndex = GetIssueIndex(res.ID, parIssueItems)

                    If issueIndex = -1 Then
                        parIssueItems.Add(New Issue(res.ID, res.title, res.createdDate, res.CreatedByUserName, res.CreatedByTeamName, res.CreatedByDeptName, New AssignedTo(res.assignedToID, res.assignedToName)))
                    Else
                        Dim oldIssue As New Issue(parIssueItems.Item(issueIndex))
                        Dim newIssue As New Issue(res.ID, res.title, res.createdDate, res.CreatedByUserName, res.CreatedByTeamName, res.CreatedByDeptName, New AssignedTo(res.assignedToID, res.assignedToName))

                        VerifyIssue(oldIssue, newIssue, parIssueItems, issueIndex)

                    End If
                Next

                'Some way to remove issues no longer in db



            Catch Ex As Exception
                MsgBox(Ex.Message)
                Throw
            Finally

                db.Dispose()
                dbIssueList = Nothing


            End Try

        End Using

        LoadIssueNotes(parIssueItems)

    End Sub
返回的错误为nullable对象必须有一个值,该值在尝试将assignedto的新实例创建为res.assignedToID时是正确的

在这种情况下,我希望它做的是创建issue实例,而不是创建assignedto实例,因此它与holding类无关

我想不出一个简单的方法来做这件事。我有一个vba背景,所以在我的hed中我只想包装do nzres.assignedToID,0。尽管在.net中没有NZ,但这仍然会创建该对象的实例,这是我想要避免的


任何提示都会有帮助。

在进一步思考后,我认为我的评论中的解决方案是正确的,有效的

解决方案是创建一个可为空的类型,即后缀?当编译器创建可能返回可为null的值的相关db实体时,返回到您的类型。你会知道你是否有严格的选项,因为编译器会抱怨


经过深思熟虑后,让子类创建一个新实例,但字段值为null,这是一个完全可以接受的解决方案。

在将参数值添加到问题中之前,您能检查参数值吗?如果为空,则添加而不是从何处获取错误?很抱歉,我在初始化将项目添加到可观察集合时遇到错误:parIssueItems.add…好的,我已经半回答了我自己的问题,但老实说,这并不令人满意。如果我将assignedto类中的类型从integer更改为integer?然后它只创建assignedto对象的一个新实例,其中类的ID为nothing。我可以接受这一点,但我更希望它根本不创建对象的实例。