L'engine di SQL Server Compact 4 ha la caratteristica principale di lavorare in-process con lo stesso applicativo che ne fa uso e permette scenari in cui dev'essere semplice l'installazione. Tra i vantaggi che si possono ottenere vi è anche la possibilità della totale gestione del database, anche dal punto di vista fisico.
Nel caso di un deployment si può scegliere di distribuire un file sdf già pronto all'uso, oppure di preparare il database a runtime solo quando necessario oppure dinamicamente in funzione di alcune logiche previste dall'applicazione.
In questo caso viene in aiuto la classe SqlCeEngine che permette l'operazione più importante: la creazione del database. Per farlo basta istanziare la classe indicando il nome del file e l'eventuale password nella stringa di connessione, e chiamare il metodo CreateDatabase.
using (SqlCeEngine engine = new SqlCeEngine("Data Source=test.sdf")) { engine.CreateDatabase(); }
Creato il file è possibile eseguire gli script DDL per creare le tabelle e relazioni di nostro interesse per terminare la preparazione del database.
// Apro la connessione using (SqlCeConnection connection = new SqlCeConnection("Data Source=test.sdf")) { connection.Open(); // Creo la tabella using (SqlCeCommand command = connection.CreateCommand()) { command.CommandText = "CREATE TABLE Test (ID int identity, Name ntext)"; command.ExecuteNonQuery(); } }
Può essere utile infine, se il database è complesso, generare lo script DDL da SQL Server Management Studio o tramite Server Explorer di Visual Studio 2010 e caricarlo a runtime come testo per essere eseguito come comando.
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
Triggerare una pipeline su un altro repository di Azure DevOps
Effettuare il binding di date in Blazor
Creare alias per tipi generici e tuple in C#
Sostituire la GitHub Action di login su private registry
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Criptare la comunicazione con mTLS in Azure Container Apps
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare database e servizi con gli add-on di Container App
C# 12: Cosa c'è di nuovo e interessante