Public Shared Function GetApplicationId(ByVal dc As ProvidersDataContext, ByVal applicationName As String) As Guid
Dim cq = CompiledQuery.Compile(Of ProvidersDataContext, String, IQueryable(Of Guid))( _
Function(pdc As ProvidersDataContext, appName As String) _
From a As Application In pdc.Applications _
Where a.ApplicationName = appName _
Select a.ApplicationId)
Dim appId As Guid = cq.Invoke(dc, applicationName).SingleOrDefault
If Not appId = Guid.Empty Then
'Si l'ApplicationId existe
Return appId
Else
'Sinon, on créé un nouvel enregistrement et on renvoie le guid inséré
Dim a As New Application
a.ApplicationName = applicationName
a.LoweredApplicationName = applicationName.ToLower
dc.Applications.InsertOnSubmit(a)
dc.SubmitChanges()
Return a.ApplicationId
End If
End Function
Public Shared Function GetRoles() _
As Func(Of ProvidersDataContext, String, IQueryable(Of String))
Return CompiledQuery.Compile(Of ProvidersDataContext, String, IQueryable(Of String))( _
Function(dc As ProvidersDataContext, applicationName As String) _
From r As Role In dc.Roles _
Join a As Application In dc.Applications On a.ApplicationId Equals r.ApplicationId _
Where a.ApplicationName = applicationName _
Select r.RoleName)