2010-03-01 11 views
9

Esistono classi che possono essere interrogate/modificate come un DB SQL ma sono interamente locali e interne al programma?Esistono classi che possono essere interrogate/modificate come un DB ma sono interamente locali e interne al programma?

Sto puntando a scrivere un programma che deve disporre di un'origine dati locale con tutti i dati salvati in un file, ma mi piacerebbe poter interrogare questo archivio informazioni proprio come farei con un DB; La compatibilità LINQ sarebbe un vantaggio enorme.

I dati sarebbero accessibili solo quando il programma stava funzionando nel senso, non ci sarebbe nessun altro processo in esecuzione per servire i dati come SQL server.

risposta

5

È possibile utilizzare SQL Server Compact Edition. È ospitato in-process e utilizza un file .sdf localmente. Funziona con LINQ e il designer LINQ-to-SQL. Per utilizzarlo, è sufficiente aggiungere un riferimento a System.Data.SqlServerCe.dll. È molto leggero, familiare e ha un eccellente supporto in Visual Studio.

Su una nota a margine, il team IDE di Visual C++ utilizza questo database per le informazioni IntelliSense C++ in Visual Studio 2010, sostituendo i vecchi file .ncb. Sulla base dei loro obiettivi dichiarati nel progetto (riscrivendo l'IDE C++ per migliorare in modo massivo le prestazioni e la stabilità di IntelliSense), vederlo usato qui dice molto.

+0

+1: questo è probabilmente un suggerimento migliore del mio. Non avevo realizzato che questo prodotto era gratuito. –

1

Mi viene in mente XML. Non sono sicuro che tu stia cercando di salvare effettivamente i dati su un file o se desideri mantenerli interamente in memoria. Ma con XML puoi usare LINQ to XML per le tue query e ha una buona struttura, facile da salvare su un file, ecc.

+0

Certamente XPath (e, ad un grado, XSLT) offre potenti funzionalità di query ... anche se un modello molto diverso da un database convenzionale. – Richard

1

DataSets consentire la memorizzazione e l'elaborazione di più tabelle di dati in memoria.

LINQ to DataSet fa parte di NET 3.5: http://msdn.microsoft.com/en-us/library/bb386977.aspx

Ciò consentirebbe un formato di archiviazione personalizzato, se si scrive la serializzazione e deserialisation a un DataSet per il formato.

Se non si desidera creare il proprio formato file, SQL Server Compact Edition (o SQL Express) sarebbe probabilmente un'opzione più semplice (come in altre risposte).

Problemi correlati