2009-11-01 14 views
10

Ich baue einige WPF Anwendung, um meine Zeit zu verwalten. Ich möchte Zeitspannen für die Arbeitszeit am Projekt für einen Kalendertag speichern.Was ist der beste Weg, um Daten lokal in einer WPF-Anwendung zu speichern?

Also meine Frage ist, was ist die beste Wahl, wie Sie die Daten speichern? Ich dachte, ich könnte eine XML-Datei, eine Access Datenbank-Datei oder vielleicht eine Eigenschaft verwenden. Ich möchte die Daten lokal speichern, also in diesem Fall keine SQL Server Aktion. :)

Was denkst du, welcher Weg zu gehen?

Antwort

5

Ich würde SQLite entweder in seiner reinen oder einer .NET-freundlichen Form greifen (eine Google-Suche nach 'sqlite .net' gibt Ihnen ein paar Möglichkeiten dort). Es ist super portabel und meiner Meinung nach einfacher zu installieren und zu verteilen als SQL Server compact.

Wichtig ist, dass Sie nicht zu eng mit Ihrem Persistenzmechanismus in Ihrem Code verbunden sind, sodass Sie in Zukunft problemlos jede beliebige Speicherstrategie ersetzen können.

+0

Danke für den Tipp! Ich werde SQLite testen, ich denke das ist was ich suche. – Richard

6

Ich weiß, dass Sie keinen SQL Server, aber ich lese das bedeutet, dass Sie keine "Server" wollen, und Sie möchten Ihre Daten auf dem Client speichern. Ich nehme auch an, dass Sie wahrscheinlich die Verwaltbarkeit Ihrer Daten nicht stören würden. Wissen Sie, Dinge wie Backup. Und Transaktionen sind immer nett, so dass Ihre Daten konsistent bleiben können. Also, während Sie XML verwenden könnten (bitte entfernen Sie alle Gedanken von Access aus Ihrem Kopf), würden Sie am Ende Ihre eigene Persistenz rollen, wenn dies ein gelöstes Problem ist.

Also, bitte überprüfen Sie die kostenlose SQL Server Compact Ausgabe. Es ist leichtgewichtig und wurde entwickelt, um auf einem Desktop- oder mobilen Gerät ausgeführt zu werden. Es ist leicht zu implementieren, wenn Ihre App dies jemals benötigt. Und alle gängigen Persistenz-Frameworks unterstützen es. Und habe ich erwähnt, es ist kostenlos (wie in Kosten nichts)?

+0

Mein eigenes persönliches Sandbox-Projekt ist mehr oder weniger dasselbe. Ich entschied mich für SqlCE, um auch Linq2Sql zu lernen. Wenn ich es noch einmal machen würde, könnte ich SqlCE w/ADO verwenden oder (wenn möglich, habe ich noch nicht recherchiert) etwas online mit dem Amazon, Google oder MS Cloud Service. –

+2

Warum nicht SQLite verwenden? Es integriert sich sehr gut mit allen Dingen .NET und residiert als eine einzige Datei in einem Dateisystem. –

+0

Ich stimme auch für SQLite. Es gibt einen Entity Framework Provider dafür, übrigens. –

4

Ich würde vorschlagen, die einfachste Datenquelle auszuwählen und sie entsprechend zu entkoppeln, so dass Sie zu einem späteren Zeitpunkt eine neue, andere Datenquelle eingeben können, wenn Sie herausfinden, was für Ihre Zwecke geeignet ist. Zu diesem Zweck können Sie etwas wie XML oder sogar Klartext finden, um die einfachste Sache zu sein, die möglicherweise funktionieren könnte.

Sobald Sie die Eigenschaften, die Sie von Ihrer Datenquelle benötigen, basierend auf Ihrer tatsächlichen Verwendung ermitteln, wählen Sie den entsprechenden Hintergrundspeicher.

Ich glaube nicht, dass es entscheidend ist, diese Entscheidung im Voraus zu treffen, denn dies ist ein persönliches Projekt, kein kommerzielles Projekt.

1

Ein toter einfacher Ansatz, den ich in der Vergangenheit verwendet habe, ist Ihre "XML-Datei" Idee. Erstellen Sie einfach ein Objekt, das die Daten beschreibt, die Ihnen wichtig sind, und serialisieren Sie es dann in XML.

Greg ist absolut richtig, wenn er sagt, stellen Sie sicher, dass Ihre Datenquelle ordnungsgemäß entkoppelt ist, so dass Sie es ausschalten können, wenn sich Ihre Anforderungen ändern.

Verwandte Themen