15 messaggi dal 24 dicembre 2011
salve a tutti sto cercando di creare un role provider personalizzato utilizzando entity framework ma non riesco a fare le function che restituiscono string()
ho scaricato il starterkit ma mi da sempre errori con questo costrutto

Public Overloads Overrides Function GetRolesForUser(ByVal username As String) As String()
Using ctx As New UsersEntities()
Return ctx.UserSet.Include("Roles").Where(Function(x) x.Username.Equals(username)).SelectMany(Function(x) x.Roles.[Select](Function(y) y.RoleName)).ToArray()
End Using
End Function

allora ho modificato il codice in questo modo per le funzioni che restituiscono boolean
Public Overrides Function RoleExists(roleName As String) As Boolean
Using ctx As New DatabaseEntities
Return ctx.roles.Count(Function(x) x.rolename.Equals(roleName)) > 0
End Using
End Function

qualcuno puo per favore aiutarmi a capire come funziona il primo costrutto e quindi il metodo corretto per far restituire un tipo string() ?
15 messaggi dal 24 dicembre 2011
allora io ho trovato questa soluzione che al momento non mi da errori
Public Overrides Function GetRolesForUser(username As String) As String()
Using context As New DatabaseEntities
Return context.UsersInRoles _
.Where(Function(c) c.username = username) _
.Select(Function(c) c.rolename).ToArray()

End Using
End Function
vi sembra corretta?

comunque come avrei potuto implementarla con il costrutto utilizzato nel starterkit?
riorio wrote:
comunque come avrei potuto implementarla con il costrutto utilizzato nel starterkit?

non so se ho capito bene la tua domanda, ma, generalmente, per fare proiezioni si utilizza l'operatore Select. che, in parole povere, vuol dire, più o meno:

Return ctx.UserSet.Include("Roles").Where(Function(x)
x.Username.Equals(username)).SelectMany(Function(x)
x.Roles.[Select](Function(y) y.RoleName)).Select(Function(x) x.Username).ToArray()

in pratica, Select crea una proiezione, prendendo solo la proprietà Username. e nel tuo modello si chiama diversamente, prova a lavorarci, ma il concetto resta lo stesso.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.