2009-06-12 4 views
10

Qual è attualmente la migliore soluzione per le applicazioni WPF che devono essere utilizzate su un computer dove diversi utenti effettuano il login e li utilizzano per ottenere/salvare informazioni localmente? Ecco come vedo le opzioni:Qual è la migliore soluzione di database locale per le applicazioni WPF?

  • MDF sembrerebbe essere la scelta migliore in quanto presumo è possibile bloccare giù abbastanza bene in modo che, anche se gli utenti possono accedere al file mdf, che ancora couldn' t accedere ai dati in esso contenuti tranne tramite l'applicazione stessa. Presumo che il file .MDF debba esistere separatamente dall'applicazione, quindi distribuire il file .exe e il file .mdf. Oh, se si utilizza un file .MDF, l'utente ha bisogno di SQL Server installato per usarlo come è indicated in this stackoverflow question?

  • Penso che SDF non sia raccomandato in quanto presenta un certo numero di limitazioni e viene utilizzato principalmente per lo storage mobile.

  • XML potrebbe essere appropriato se la sicurezza non fosse importante, ad es. una piccola applicazione per utente singolo per salvare i dati che a livello locale non sarebbero comunque protetti e questo file sarebbe facilmente accessibile da altre applicazioni/siti web sul computer.

  • SQLite potrebbe essere una scelta ma da quello che so le API per .NET per questo database non sono ancora così robuste, vero?

  • .mdb L'accesso potrebbe essere una scelta se è necessario che gli utenti modifichino/visualizzino i dati o generino report con Access.

  • c'è anche IsolatedStorage ma credo che questo limiti gravi, non è vero, ad es. non è in grado di accedervi da altre applicazioni?

  • magari utilizzando un servizio di cloud potrebbe essere fattibile e abbastanza straight-forward al giorno d'oggi, avrebbe dovuto indagare

apprezzerebbe commenti o idee.

risposta

11

SQL Server è anche un'opzione - http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx

distribuzione è abbastanza facile tramite ClickOnce o copiando i DLL del motore alla directory dell'applicazione .

edizione
+0

non è lo stesso dei file ".ldf" che puoi creare con Visual Studio facendo "aggiungi elemento, database locale"? –

2

Direi SQLite. È incredibilmente leggero e facile da usare, e l'API va bene. È sempre possibile utilizzare DbLinq come ORM.

3

Vorrei scegliere SQLite. È possibile ottenere il driver compatibile ADO.NET qui: Compact Edition

System.Data.SQLite

+0

cinque mesi fa, LINQ-to-SQLite non sembrava essere una realtà, è cambiato da allora? –

+0

come proteggerei i dati in modo che un utente con il plugin SQLite Manager per Firefox (https://addons.mozilla.org/en-US/firefox/addon/5817) non possa semplicemente aprirlo e leggere/scrivere su c'è un modo per farlo? –

+0

È possibile utilizzare un dbfile sqlite per utente. – Nifle

1

SQL Server Compact è la mia scelta a causa dei seguenti vantaggi:

  • Una piccola libreria di runtime che è possibile distribuire con la tua applicazione
  • Compatibile con LINQ to SQL (ricerca "SqlMetal.exe")
  • esperienza di progettazione integrato con Visual Studio 2008

E 'una bella tuttofare come una soluzione leggera per un'applicazione .NET.

http://www.microsoft.com/Sqlserver/2008/en/us/compact.aspx

0

MDF sembra essere la soluzione più flessibile ma l'utente bisogno di avere server di SQL Express installato per usarlo.

Come pensate di eseguire i processi CRUD? Se si desidera utilizzare Linq per SQL, si è limitati ufficialmente, supporta solo SQL 2005, Sql 2008 e Sql Compact.

Inoltre, l'applicazione deve essere scollegata, parzialmente, completamente connessa a Internet? Questo potrebbe dare un po 'di peso alla tua decisione.

IMO, vorrei iniziare con SQL Server Compact Edition e se era troppo limitante, passare a SQL Server Express. (.MDF)