SQL Server Compact 4 rappresenta un'ottima soluzione per sostuire SQL Server, quando la potenza di quest'ultimo non è necessaria. Avendo piena compatibilità con Entity Framework, tendenzialmente adattare una soluzione pensata per SQL Server non è molto complesso: basta adattare la stringa di connessione ed assicurarsi che il modello sia simile.
ASP.NET, sin dalla versione 2.0, supporta un meccanismo di accesso ad aree protette molto flessibile, basato su provider e quindi facilmente estendibile, che prende il nome di Membership e Roles API. Sfortunatamente, non esiste un provider predefinito per SQL CE e quello per SQL Server non è compatibile. In questo caso, dunque, è necessario sviluppare un provider ad hoc, scrivendo opportunamente il codice.
Nel nostro caso, abbiamo deciso di partire con una struttura semplice, basandoci sullo starter kit che sfrutta Entity Framework, disponibile su http://lab.aspitalia.com/64/Starter-Kit-Entity-Framework-Provider-Membership-Roles-API.aspx
Questo starter kit è pensato per Entity Framework e SQL Server, ma può essere facilmente adattato a SQL CE, perchè Entity Framework, a propria volta, lavora con il concetto di provider. Ricostruendo il database (che si trova allegato), è possibile adattare la stringa di connessione, specificando come segue il provider da utilizzare:
<add name="UserEntities" connectionString="metadata=res://*/App_Code.ObjectModel.SecurityModel.csdl|res://*/App_Code.ObjectModel.SecurityModel.ssdl|res://*/App_Code.ObjectModel.SecurityModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=|DataDirectory|\Authentication.sdf"" providerName="System.Data.EntityClient" />
Non è necessario fare altro, perchè il modello è identico e quindi Entity Framework, semplicemente, adatta le proprie query.
Una volta fatto questo passo, il provider consentirà di sfruttare le funzionalità principali legate a Membership e Roles API, ad esempio relative al login, sfruttando il controllo Login.
I provider per Membership e Roles vanno registrati all'interno del web.config, come segue:
<!-- Membership API--> <membership defaultProvider="DBServerMembership"> <providers> <clear /> <add name="DBServerMembership" type="DBMembershipProvider, App_Code" /> </providers> </membership> <!-- Roles API --> <roleManager enabled="true" defaultProvider="DBServerRoles" cacheRolesInCookie="true" cookieProtection="All"> <providers> <add name="DBServerRoles" type="DBRoleProvider, App_Code" /> </providers> </roleManager>
I provider allegati non implementano tutte le funzionalità, ma grazie alla facilità di utilizzo di Entity Framework, diventa relativamente semplice aggiungere quelle mancanti. Nell'allegato si trova una soluzione completa, con cui testarne il funzionamento. Il codice è pensato per ASP.NET 4.0, ma con alcune accortezze (relative alle differenze tra Entity Framework 1.0 e 4.0), è possibile farne uso anche in presenza di ASP.NET 3.5 SP 1.
Riferimenti utili
Dite addio ad Access con SQL Server Compact 4.0 (speciale)https://www.aspitalia.com/focuson/1207/Dite-Addio-Access-SQL-Server-Compact-4.0.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Abilitare HTTP/3 in ASP.NET Core 7.0
Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript
Health monitoring con Azure Container App
Ottimizzare il codice JavaScript utilizzando WeakMap e WeakSet
Taggare la output cache in base al routing in ASP.NET Core
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
ChatOps con GitHub
Utilizzare l'attributo autofill del CSS
Usare Azure Application Gateway come reverse proxy per ASP.NET Core
Creare attributi generici in C#
Fare automaticamente il merge di una pull request con un workflow di GitHub
Creare un router per Single Page Application con l'evento navigate
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2022 - Milano e Online
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!