2014-11-16 3 views
0

.net에 관해서는 새삼스럽고 가능한 한 효율적으로 처리하는 방법에 관해서는 저를 망설이게합니다.db 결과가 null이 아닌 경우에만 객체 인스턴스 생성

나는 Entity Framework를 통해 여러 레코드를 검색 한 다음 관찰 가능한 컬렉션에 추가 된 "issue"개체의 인스턴스를 여러 개 만듭니다.

"문제"개체에는 단순히 정수와 문자열을 포함하는 "assignedto"라는 하위 클래스가 있습니다. 그러나 항상 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 

는 널 (NULL) 개체를 할 때 정확한 값을 가지고 있어야합니다 res.assignedToID는 아무것도 아니기 때문에 "assignedto"의 새 인스턴스를 만들려고합니다.

이 경우 "문제"인스턴스를 만들지 만 assignedto 인스턴스를 만들지 않으므로 보유 클래스와 아무 관계가 없습니다.

나는 내 삶을 위해 이것을 할 수있는 쉬운 방법을 생각할 수 없다. 나는 vba 배경을 가지고있어서 hed에서 나는 단지 nz (res.assignedToID, 0)를 감싸고 싶다. .net에는 NZ가 없지만 그 객체의 인스턴스는 어쨌든 만들어야합니다. 이는 피하고 싶습니다.

모든 포인터가 도움이 될 것입니다.

+0

문제 내부에 매개 변수 값을 추가하기 전에 매개 변수 값을 확인할 수 있습니까? null 경우는 대신에 ""를 붙이십시오 – Eric

+0

정확히 어디에서 에러가 발생합니까? –

+0

죄송합니다 observable 컬렉션에 항목을 추가 initializing 때 죄송합니다 : parIssueItems.add .... –

답변

0

추가로 생각한 후에 답변으로 표시하려면 내 의견의 해결책이 정확하고 올바르게 작동한다고 생각합니다.

해결책은 null 허용 유형, 즉 접미사를 만드는 것입니다. 컴파일러가 nullable 값을 반환 할 수있는 관련 db 엔티티를 만들면 형식에 추가합니다. 컴파일러가 불평 할 때 엄격한 옵션을 가지고 있는지 알 수 있습니다.

약간의 생각이 들자면 하위 클래스가 새 인스턴스를 만들지 만 null 필드 값을 사용하면이 문제를 완벽하게 수용 할 수 있습니다.

관련 문제