12 Stimmen

Was ist der beste Weg, um Daten lokal in einer WPF-Anwendung zu speichern?

Ich baue gerade einige WPF Anwendung, um meine Zeit zu verwalten. Ich würde gerne Zeitspannen für die Arbeit an einem Projekt für einen Kalendertag speichern.

Meine Frage ist also, wie man die Daten am besten speichert? Ich dachte, ich könnte eine XML-Datei verwenden, eine Zugang Datenbankdatei oder vielleicht eine Eigenschaft. Ich würde die Daten gerne lokal speichern, also keine SQL-Server Aktion in diesem Fall :)

Was denken Sie, welchen Weg sollten wir einschlagen?

7voto

Adam Lear Punkte 36637

Ich würde mir SQLite entweder in seiner reinen oder in einer .NET-freundlichen Form (eine Google-Suche nach "sqlite .net" wird Ihnen einige Möglichkeiten aufzeigen). Es ist super-portabel und meiner Meinung nach einfacher einzurichten und zu verteilen als SQL Server compact.

Wichtig ist, dass Sie in Ihrem Code nicht zu eng an Ihren Persistenzmechanismus gekoppelt sind, so dass Sie in Zukunft problemlos jede beliebige Speicherstrategie ersetzen können.

6voto

Jerry Bullard Punkte 6131

Ich weiß, dass Sie sagten, kein SQL Server, aber ich lese das so, dass Sie keinen "Server" wollen, und Sie wollen Ihre Daten auf dem Client zu speichern. Ich nehme auch an, dass Sie wahrscheinlich nichts gegen eine gewisse Verwaltbarkeit Ihrer Daten haben. Sie wissen schon, Dinge wie Backups. Und Transaktionen sind immer gut, so dass Ihre Daten konsistent bleiben können. Sie könnten zwar XML verwenden (verbannen Sie bitte alle Gedanken an Access aus Ihrem Kopf), aber Sie würden am Ende Ihre eigene Persistenz entwickeln, obwohl dies ein gelöstes Problem ist.

Schauen Sie sich also bitte die kostenlose SQL Server Kompakt Ausgabe. Sie ist leichtgewichtig, für die Ausführung auf einem Desktop oder einem mobilen Gerät konzipiert und lässt sich leicht bereitstellen, falls Ihre Anwendung das jemals tun muss. Und alle gängigen Persistenz-Frameworks unterstützen es. Und habe ich schon erwähnt, dass es kostenlos ist (d. h. nichts kostet)?

0 Stimmen

Mein persönliches Sandkastenprojekt ist mehr oder weniger dasselbe. Ich entschied mich für SqlCE als eine Möglichkeit, auch Linq2Sql zu lernen. Wenn ich es noch einmal machen würde, würde ich mich vielleicht für SqlCE mit ADO entscheiden oder (falls praktisch, ich habe noch nicht recherchiert) für etwas, das online mit dem Amazon-, Google- oder MS-Cloud-Service läuft.

2 Stimmen

Warum nicht SQLite verwenden? Es lässt sich sehr gut in .NET integrieren und befindet sich als einzelne Datei in einem Dateisystem.

0 Stimmen

Ich stimme auch für SQLite. Es gibt übrigens einen Entity Framework-Anbieter dafür.

4voto

Greg D Punkte 41958

Ich würde vorschlagen, eine möglichst einfache Datenquelle zu wählen und sie entsprechend zu entkoppeln, damit Sie später eine neue, andere Datenquelle einfügen können, wenn Sie herausgefunden haben, was für Ihre Zwecke geeignet ist. Zu diesem Zweck können Sie etwas wie XML oder sogar Klartext zu finden, um die einfachste Sache, die möglicherweise funktionieren könnte sein.

Sobald Sie die Merkmale bestimmt haben, die Sie von Ihrer Datenquelle benötigen, wählen Sie auf der Grundlage Ihrer tatsächlichen Nutzung den geeigneten Sicherungsspeicher.

Ich glaube nicht, dass es wichtig ist, diese Entscheidung im Voraus zu treffen, da es sich um ein persönliches Projekt handelt, nicht um ein kommerzielles.

1voto

Nader Shirazie Punkte 10691

Ein ganz einfacher Ansatz, den ich in der Vergangenheit verwendet habe, ist Ihre Idee mit der "xml-Datei". Erstellen Sie einfach ein Objekt, das die Daten beschreibt, die Sie interessieren, und serialisieren Sie es dann in Xml.

Greg hat absolut Recht, wenn er sagt, dass Sie sicherstellen müssen, dass Ihre Datenquelle richtig entkoppelt ist, damit Sie sie austauschen können, wenn sich Ihre Anforderungen ändern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X