Hallo,
ich lerne seit einer Weile C#/ .NET und bin nun das erste Mal in einem Projekt an eine (lokale) Datenbank angewiesen. Dabei hab ich mich für SQLite entschieden, einfach weil es mir schon vertraut ist und ich es aufgrund dessen, dass es eine einfache Datei ist, am einfachsten finde.
Bin auch offen für andere Vorschläge, aber wenn wir mal beim SQLite bleiben habe ich folgende Frage:
Wie verhält es sich beim Projekt Export? Wie nehme ich die Datenbank mit? Sollte ich eine Art "Startup" Script schreiben, welches auf den Computern der Nutzer in versteckten Ordnern oder in C:\Programme die .sqlite Datei erstellt und befüllt?
Da gibt es so viele Möglichkeiten, wie du dir ausmalen kannst 😃
Gängig ist denke ich die Datenbank mit dem Installer mit verteilen zu lassen. Oder aber auch das von dir angesprochene "Startup".
Es kommt dabei auf den Anwendungszweck an. Der Installer macht sicherlich weniger Arbeit, aber wenn du die Datei dann im Benutzverzeichnis des aktuellen Benutzers ablegst kommt es zu fehlern, wenn ein anderer Benutzer sich am PC anmeldet und versucht die Applikation zu starten.
Weniger gängig wäre die Datenbankdatei in die Applikation einzubetten und beim Start zu kopieren.
Unter C:\Programme würde ich die Datei allerdings nicht ablegen, hier hat die Applikation idr. keinen Schreibzugriff.
Das Thema wurde hier schon sehr häufig besprochen.
Benutzerdaten haben nichts im Programverzeichnis zu suchen ( siehe Papst's Antwort ).
Es gibt da extra z.b. Environment.SpecialFolder.CommonApplicationData in zusammenarbeit
mit Environment.GetFolderPath.
Da sich Datenbanken ständig ändern solltest du von vornherein mit Migrations arbeiten.
MS hat z.b. beim EF erst viel zu spät damit angefangen.
Da man aus Komfort Gründen sowieso auf einen ORMapper wechselt, sollte man schauen was der bietet.
Bei SQLite-NET ist sowas schon eingebaut.
Als eigenständigen Migrator benutzen wir seit Jahren FluentMigrator
@seehashtag
Vielleicht solltest du dir mal EF Core anschauen.
Hab vor 2-3 Wochen mal mit dem aktuellen SQLite Provider rumgespielt.
Dort kannst du dann über den Context mit EnsureDatabase, wenn ich mich rech entsinne, dann auch die DB mit der aktuellen Klasse anlegen lassen.
Migrationen erlaubt EF Core auch, sind aber vom Handling für mich als Neueinsteiger auch noch etwas umständlich/ungewohnt.
Je nachdem welche Daten ggf. schon in der DB enthalten sein müssten, solltest du beim Initalisieren dann die DAten eintragen.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Hallo seehashtag,
zu dem was T-Virus sagte hilft vielleicht:
ASP.NET Core 1.0 with SQLite and Entity Framework 7
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
@Coffeebean
Und auch der Link hilft ungemein:
https://docs.efproject.net/en/latest/platforms/index.html
Hab damit meine ersten Gehversuche mit Entity Framework Core gemacht und mit den Anleitungen + Testen + weiteres Googeln kam dann schon was einfaches zusammen.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.