1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| Private Property Caches As New ConcurrentDictionary(Of CacheCategory, MemoryCache)
<ThreadStatic> Private SqlDataLayer As SQL_DataLayer
Private ReadOnly Property Policy As CacheItemPolicy
Get
Return New CacheItemPolicy() With {.AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(CInt(ConfigurationManager.AppSettings("TEMPS_CACHE")))}
End Get
End Property
Private ReadOnly Property QuickPolicy As CacheItemPolicy
Get
Return New CacheItemPolicy() With {.AbsoluteExpiration = DateTimeOffset.UtcNow.AddSeconds(15)}
End Get
End Property
Private Sub AddToCache(categorie As CacheCategory, key As String, value As Object, Optional quickCache As Boolean = False)
If Cache_Active Then
Try
If quickCache Then
Caches(categorie).Add(New CacheItem(key, value), QuickPolicy)
Else
Caches(categorie).Add(New CacheItem(key, value), Policy)
End If
Catch ex As Exception
End Try
End If
End Sub
Private Function CacheContains(categorie As CacheCategory, key As String)
If Cache_Active Then
Try
If Caches(categorie).Contains(key) Then
Return True
End If
Return False
Catch ex As Exception
End Try
Else
Return False
End If
End Function
Public Function Get_Dos_Collection(Of T)(Ctx As String, Optional Code As String = "") As IEnumerable(Of T)
SqlDataLayer = New SQL_DataLayer
Try
Select Case GetType(T).Name.ToUpper
Case "Code_Etat"
Dim key As String = "Get_Dos_Collection_code_Etat"
If CacheContains(CacheCategory.Dossier, key) Then
Return Caches(CacheCategory.Dossier)(key)
Else
Dim retour = SqlDataLayer.GetAll_Code_Etat(Ctx)
AddToCache(CacheCategory.Dossier, key, retour)
Return retour
End If
Case ...........
End Select
Catch ex As Exception
End Try
End Function
Public Function GetAll_Code_Etat(ByVal Contexte As String) As List(Of code_etat)
Dim reader As DbDataReader = Nothing
Dim Liste As New List(Of DOS_CODE_ETAT_DOSSIER)
Try
requete = "SELECT code, libelle, auto"
requete &= " FROM code_etat"
requete &= " ORDER BY libelle"
reader = Ouverture_Reader()
While reader.Read
Dim UnObj = New code_etat
UnObj.InitWithDataReader(reader, Contexte)
Liste.Add(UnObj)
End While
Catch ex As Exception
Finally
FermetureReader(reader, True)
End Try
Return Liste
End Function |
Partager