对于.net来说,我是个新人,这让我难以理解如何尽可能高效地处理它。
我通过Entity Framework检索大量记录,然后创建"问题"的多个实例。添加到可观察集合中的对象。
在"问题" object是一个名为"被赋予"的子类。它只包含一个整数和一个字符串。但是,并不总是这样,db中的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
返回的错误是可空的对象必须有一个值,当它试图创建&#34; assignedto&#34;的新实例时,这是正确的。因为res.assignedToID什么都没有。
在这种情况下我想要它做什么来创建&#34;问题&#34;实例但不创建assignedto实例,因此它与保持类没有关系。
我不能为我的生活想到一个简单的方法来做到这一点。我有一个vba背景所以在我的hed中我只想包装do nz(res.assignedToID,0)。虽然.net中没有NZ,但仍然会创建该对象的实例,这是我想要避免的。
任何指针都会有所帮助。
答案 0 :(得分:0)
在进一步思考之后,我将此标记为已回答,我相信我的评论中的解决方案是正确无误的。
解决方案是创建一个可以为空的类型,即后缀?当编译器创建可能返回可为空值的相关db实体时,在您的类型上。你会知道你是否有严格的选项,因为编译器会抱怨。
经过一番思考,让子类创建一个新的实例,但是使用空字段值是一个完全可以接受的解决方案。