Wie installiere ich eine benutzerdefinierte Desktop-Anwendungsdatenbank in SQL Express?

Ich habe eine WPF-Desktop-Anwendung, die eine benutzerdefinierte database für die memoryung verwendet. Ich muss ein Setup-Projekt vorbereiten (von Visual Studio 2008) (vollständiges Setup, nicht ClickOnce).

Ich kann die list der Voraussetzungen für die Anwendung hinzufügen und sie wird während des Setups der Anwendung installiert.

Meine Frage ist: Wie kann ich ein Skript während des Setups ausführen, um die database zu erstellen, die die Anwendung benötigt? ODER Wie kann ich die database während des Setups auf die Client-Maschine wiederherstellen?

Eine andere Frage, was passieren würde, wenn es bereits auf dem Client-Rechner existiert? Wie erkennt man den Instanznamen und die Verbindungsdaten? Und dann, wie man in der Lage sein kann – um die Verbindungszeichenfolge zu ändern, die von Entity Framework verwendet wird, um eine Verbindung zu dieser database herzustellen?

Danke, Ed

SQL server Express Edition ist in der Regel eine wirklich schlechte Wahl für eine lokale database. Es ist eine server-class-Engine, die gerne eine Menge von Ressourcen zu verwenden und läuft als Dienst (so ist es mit diesen Ressourcen, auch wenn Ihre App nicht läuft). Mit anderen Worten, es gehört auf einem server.

Der einzige Ort, den ich gesehen habe SQL server Express auf einem Desktop, der fast sinnvoll ist, ist als Teil der Microsoft Small Business Accounting App, und in diesem Fall Sie in der Regel installieren, dass Programm auf einer Maschine, die primäre Zweck ist die Buchhaltung für Ihre Geschäft.

Was Sie tun sollten, ist eine Desktop-oder In-process-class-Engine wie SQL server Compact Edition , Sqlite oder sogar Access verwenden. Dies vereinfacht auch Ihren deployment erheblich .

Wenn Sie darauf bestehen, dies zu durchdringen, wissen Sie, dass der Installateur eine neue Instanz von SQL server auf dem System erstellt. SQL server wird gut damit sein. Allerdings müssen Sie das in der Verbindungszeichenfolge Ihrer App berücksichtigen, und das kann ein wenig komplizierter sein. Zusätzlich zum Einrichten der database haben Sie ein paar Optionen:

  • Erstellen Sie es aus dem Client-Code beim ersten Start der App
  • Erstellen Sie es mit einem benutzerdefinierten Installationsprogramm (schwer zu bekommen, weil msi permissions)
  • Verteilen Sie eine Pre-Build * .mdf-file und fügen Sie mit benutzerdefinierten Installationsprogramm oder beim ersten Start der App.