У меня есть приложения winforms, которые имеют сервер SQL сервера SQL. В моей базе данных у меня есть таблицы поиска для одинакового статуса и другие таблицы, где данные редко изменяются. В моем приложении несколько форм могут использовать одни и те же таблицы поиска (некоторые содержат много данных). Вместо загрузки / заполнения данных каждый раз, когда форма открыта, есть способ кэшировать данные из базы данных, к которой можно получить доступ из нескольких форм. Я немного искал, но не смог найти лучшего решения. Есть кеширование, словари и т. Д. Какое лучшее решение, и можете ли вы указать мне документацию, в которой это обсуждается и может даже иметь пример.
Edit:
В моем первоначальном посте я не упомянул, что у меня есть строго типизированный набор данных и я использую табличные адаптеры. Я хочу предварительно загрузить таблицы поиска при запуске приложения, а затем использовать эти таблицы наборов данных во всем приложении, в нескольких формах, не заполняя их в каждой форме.
Я попытался создать класс:
Public Class dsglobal
Public Shared EML_StaffingDataSet As EML_StaffingDataSet
Public Shared Sub populateDS()
EML_StaffingDataSet = New EML_StaffingDataSet
End Sub
Public Shared Sub loadskills()
Dim ta As New EML_StaffingDataSetTableAdapters.TSTAFFSKILLTableAdapter
ta.Fill(EML_StaffingDataSet.TSTAFFSKILL)
End Sub
End Class
Я запускаю это в фоновом режиме, когда запускается мое приложение. Таким образом, он загружает таблицу наборов данных. При заполнении я вижу, что в данных есть данные. Когда я открываю форму, я хочу использовать таблицу набора данных, но она, кажется, очищает данные. Не уверен, что мой подход правильный или где моя ошибка.
Edit2:
Я также пробовал это в комментариях, но не уверен, что делаю это правильно. Если я делаю это правильно, то как мне использовать это как источник данных во время разработки, могу ли я сделать это только программно?
Public Module lookupdata
Private EML_StaffingDataSet As EML_StaffingDataSet
Private skillvalues As List(Of skill)
Public ReadOnly Property skill As List(Of skill)
Get
If skillvalues Is Nothing Then
getskillvalues()
End If
Return skillvalues
End Get
End Property
Private Sub getskillvalues()
skillvalues = New List(Of skill)
EML_StaffingDataSet = New EML_StaffingDataSet
Dim ta As New EML_StaffingDataSetTableAdapters.TSTAFFSKILLTableAdapter
ta.Fill(EML_StaffingDataSet.TSTAFFSKILL)
For Each row As DataRow In EML_StaffingDataSet.TSTAFFSKILL
Dim skill As New skill
skill.skill_id = row("skill_id")
skill.skill_desc = row("skill_desc")
skill.skill_open_ind = row("skill_open_ind")
skillvalues.Add(skill)
Next
End Sub
End Module
Public Class skill
Public Property skill_id As Integer
Public Property skill_desc As String
Public Property skill_open_ind As Boolean
End Class