【发布时间】:2019-12-08 05:41:01
【问题描述】:
我的代码构建并运行,但是当我在运行时引用 dbcontext 时,我得到“System.NullReferenceException: 'Object reference not set to an instance of an object.'”。我在解决方案中的很多其他地方使用了上下文并且它可以工作,但其他地方是 c#。这是VB。
Imports DataServices
Imports Previdence.Domain.Model
Imports Previdence.Business.Model.Report
Namespace UserControls
Partial Class RemissionControl
Inherits UserControl
Private previdenceContext As PrevidenceContext
Private patient As Subject
Private remissionButtonStatus As Boolean?
Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim snapshotId As Guid = Utility.StringToGuid(Request.QueryString("snapshotId"))
patient = (From su In previdenceContext.Subjects
Join ep In previdenceContext.Episodes On su.SubjectId Equals ep.SubjectId
Join sn In previdenceContext.Snapshots On ep.SubjectId Equals sn.SnapshotId
Where sn.SnapshotId = snapshotId
Select su).FirstOrDefault()
remissionButtonStatus = patient.RemissionButtonOn
If remissionButtonStatus = True Then
remissionRButtonYes.Checked = True
remissionRButtonNo.Checked = False
Else
remissionRButtonYes.Checked = False
remissionRButtonNo.Checked = True
End If
End Sub
'TODO: getting null reference error on the dbcontext
Private Sub remissionRButtonYes_click() Handles remissionRButtonYes.CheckedChanged
If remissionRButtonYes.Checked = True Then
patient.RemissionButtonOn = True
Else patient.RemissionButtonOn = False
End If
previdenceContext.SaveChanges()
End Sub
Private Sub remissionRButtonNo_click() Handles remissionRButtonNo.CheckedChanged
If remissionRButtonNo.Checked = True Then
patient.RemissionButtonOn = False
Else patient.RemissionButtonOn = True
End If
previdenceContext.SaveChanges()
End Sub
End Class
End Namespace
【问题讨论】:
-
错误发生在哪一行?注意
.FirstOrDefault()可以返回Nothing。 -
previdenceContext是在哪里创建的? -
@Andrew Morton:错误发生在“患者 = (From su In previdenceContext.Subjects”行上
-
@RobertBaron:我相信它是在“Private previdenceContext As PrevidenceContext”线上实例化时创建的。这是 VB 中对象的正确实例化吗?
-
你提到的那一行只声明了变量。您需要使用 New 创建一个实例。
标签: asp.net vb.net controls dbcontext