Domanda

Sto avviando una nuova applicazione web.Sarà ospitato su un servizio che addebita un costo aggiuntivo per SQL Server e francamente non penso che il sito abbia bisogno di molto database.In questo momento il modello di dati è di 5 tabelle.E rimarrei stupito se il tavolo più grande di sempre arrivasse a 10.000 record.

Quindi mi piacerebbe mantenere il db leggero. SQLite ha suscitato il mio interesse inizialmente perché devo impararlo per Android.Ma il mancanza di chiavi esterne mi fa rabbrividire.Certo è possibile implementare qualcosa che assomigli a vincoli di chiave esterna, ma sembra semplicemente non relazionale. Uccello di fuoco sembra l'unico db leggero (e gratuito) che supporta gli FK.

Inoltre, mi piacerebbe davvero immergermi in LINQ con questo progetto.Finora ho trovato solo dbLINQ che mi consente di utilizzare SQLite o Firebird con LINQ.Attualmente è alla versione 0.18, quindi è lontano dall'essere in prima serata.Ho eseguito i test per SQLite con dbLinq e superano ciò di cui ho bisogno.

C'era un'altra implementazione di LINQ per SQLite ma tutti i collegamenti che ho trovato finiscono in 404.

Quindi quali sono le mie opzioni per i database leggeri compatibili con LINQ?È disponibile una qualsiasi delle edizioni compatte di SQL Server, a meno che non ce ne sia una distribuibile su XCOPY senza installazione di un agente/servizio?Non posso chiedere all'host di installare un nuovo software poiché dubito che lo faranno e voglio che l'app sia altamente portabile (rispetto all'hosting).

L'elenco finora:

  • SQLite
  • Uccello di fuoco
  • SQL Server compatto
  • VistaDB

Aggiornamento: Ho provato tutte le versioni e ho scritto qui le mie impressioni.La versione breve:SQLite vince a mani basse.È l'unico che ha una buona GUI, nessuna installazione ed è gratuito.

È stato utile?

Soluzione 4

SQLite. Ha una buona interfaccia grafica (con auto-freakin-complete non meno), non ha footprint di installazione, è gratuito e funzionerà indipendentemente da dove ospito il sito web. So che sto rispondendo alla mia domanda, ma nessun altro ha inserito solo SQLite nella sua risposta.

Importante : SQLite richiederà un host web che utilizza la modalità Full Trust se si desidera eseguirlo su hosting condiviso.

Altri suggerimenti

È possibile utilizzare LINQ to SQL così com'è su un database esistente, purché sia ​​possibile creare uno standard IDbConnection oggetto.

Ecco del codice per utilizzare LINQ su un DB Firebird.

DbProviderFactory dbProvider = DbProviderFactories
    .GetFactory("FirebirdSql.Data.FirebirdClient");

DbConnection connection = dbProvider.CreateConnection();
connection.ConnectionString = "some connection string";

DataContext linqContext = new DataContext(connection);

var query = from something in linqContext.GetTable<SomeType>() 
            select something.someproperty;

SQL Server Compact Edition ( http://en.wikipedia.org/wiki/SQLCE) supporta LINQ e tutti gli altri strumenti VS, è integrato in VS 2008, supporta FK ed è XCOPY distribuibile con un file flat per un database. Tuttavia, tieni presente che non sono privi di avvertimenti, molte cose come viste o query nidificate cadono e può essere piuttosto gonfio se inizi a ottenere dimensioni del database piuttosto grandi (ad esempio 50 MB +).

SQLite è anche molto migliore se si utilizza il provider SQLite .NET qui ( http: //sqlite.phxsoftware.com/ ), funziona anche con LINQ e ha un supporto VS di base.

Suggerirei di dare un'occhiata a VistaDB . Farà esattamente quello che stai cercando con l'ulteriore vantaggio rispetto a SQLCE e SQLite che supporta visualizzazioni, stored procedure e trigger. È un dato di fatto che supporta la scrittura di procedure e trigger in TSQL e .NET in modo da poter sfruttare SQL Server E le tue conoscenze .NET.

SQL Server Express

VistaDB è l'unica alternativa se hai intenzione di eseguire il tuo sito Web su hosting condiviso (quasi tutti non ti permetteranno di eseguire i tuoi siti Web in modalità Full Trust) e anche se hai bisogno di un sito Web abilitato per la distribuzione x-copy.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top