У меня есть форма с gridview, при выборе записи из GV она вызывает другую страницу details.aspx, подробная страница имеет форму с FormView с использованием SelectMethod = "GetData", чтобы отображать данные для выбранной записи идентификатора, последующий:Как улучшить этот код (LINQ to Entity)
Public Function GetData(ByVal id? As Integer) As Ems_Candidate Try // store record id in memVar to use it when retreve the image strRecNo = id.ToString Call LoadCandidateImage() Return _db.DbSet_Candidates.Find(id) Catch ex As Exception ModelState.AddModelError("ModelError", ex.Message.ToString) Return 1 End Try End Function
в то же время, когда данные переплетены в FormView я должен был показать некоторые данные в метке из этой записи, но вне модели FormView, я имел обновите приведенный выше метод следующим образом:
Public Function GetData(ByVal id? As Integer) As Ems_Candidate Try // store record id in memVar to use it when retrieve the image strRecNo = id.ToString Call LoadCandidateImage() // Start: new lines added Dim objQuery As IQueryable(Of Ems_Candidate) = _ From c In _db.DbSet_Candidates Where c.CandidateID = id Select c For Each c In objQuery If c.CandidateStatus.Equals("A") Then Me.lblCandidateStatus.Text = "Active" ElseIf c.CandidateStatus.Equals("D") Then Me.lblCandidateStatus.Text = "Deleted" ElseIf c.CandidateStatus.Equals("W") Then Me.lblCandidateStatus.Text = "Waived" Else Me.lblCandidateStatus.Text = "N/A" End If Next // End: new lines added Return _db.DbSet_Candidates.Find(id) Catch ex As Exception ModelState.AddModelError("ModelError", ex.Message.ToString) Return 1 End Try End Function
Мне пришлось запросить базу данных снова как IQueryable, чтобы иметь возможность выбирать необходимые данные до того, как я верну данные.
Я не думаю, что этот способ практично ударить базу данных дважды в одном месте, даже если бы я не использовал это, если я использую Ado.Net, есть ли способ улучшить код?
Спасибо за помощь.
Спасибо, отлично работает. – adscnet