none
Konsistente Datenbank Beschreibung RRS feed

  • Frage

  • Ich habe eine Solution mit 3 Projekten. 2 HTTP Handler (ASP.NET) und 1
    WinForms Projekt. Alle drei sollen auf die selbe Datenbank zugreifen,
    die sich auf der Ordnerebene befindet, die allen Dreien übergeordnet
    ist. Angefangen habe ich mal mit dem WinForms Programm. Als ich das
    erstellt habe, habe ich ein DataGridView hinzugefügt und mit der
    Datenbank verknüpft. Ich meine, dass mir der Designer da einen Satz
    Dateien (.xsd, .xsc, .xss und .cs) erstellt hat.
     
    Diese Beschreibung würde ich gerne in allen 3 Projekten benutzen. Da die
    Datenbankstruktur noch im Aufbau ist, ändert sich noch häufig was. Diese
    Ändereungen sollen konsistent in alle Projekte einfließen. Wie kann ich
    das am Besten bewerkstelligen?
     
    TIA,
    Hajü
     
    Freitag, 1. Juni 2012 09:36

Antworten

  • Hallo Hans,

    was sich hier immer sehr gut macht ist eine automatische Generierung. Dadurch bekommst Du dann tatsächlich Abweichungen direkt zur Entwicklungszeit. Wir nutzen sehr intensiv das Entity Framework um auf unsere Datenbanken zuzugreifen.

    Wenn Du die Datenklassen manuell erstellst und pflegst, dann hast Du keine Fehler zur Laufzeit, wenn Du etwas vergisst. (Bzw. sind diese dann darauf zurückzuführen, dass es in dem Datenbankschema Abweichungen gibt. Datenbankänderungen in der Entwicklungsdatenbank müssen ja auch auf die Produktionsdatenbank aufgespielt werden.)

    Und bezüglich Abhängigkeiten erkennen: Ein Release Build bauen wir immer komplett. Egal was sich verändert hat und was nicht! Visual Studio scheint hier manchmal Probleme zu haben die dann nach einem "clean" verschwunden sind. Und da wir unnötige Risiken vermeiden wollen wenn es um die Erstellung eines Releases geht, haben wir uns diese Regel aufgestellt.

    Ich hoffe, dass ich Deine Punkte richtig erfasst habe und meine Antworten weiter geholfen haben. (Wenn nicht einfach klarstellen!)

    Mit den besten Grüßen,

    Konrad

    • Als Antwort markiert Hans-J. Ude Donnerstag, 7. Juni 2012 12:11
    Freitag, 1. Juni 2012 10:24
  • Hi,

    Ich denke mir, so ein exotisches Problem kann das doch nicht sein, dass
    ein ASP Programm in eine Datenbank schreibt und ein WinForms Programm
    das Frontend dazu ist. Wenn man den Trick kennt. Wobei der ASP Teil bei
    mir einfach zwei HTTP Handler sind, ohne Benutzeroberfläche.

    in dem Fall würde ich aber eher auf ASP.NET Webservices setzen und diese dann aus den WinForms Anwendungen heraus ansprechen. Es macht IMHO nicht wirklich Sinn, die Datenspeicherung komplett in ASP.NET zu erledigen, die WinForms Anwendungen aber dennoch direkt an die Datenbanken anzubinden.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Hans-J. Ude Donnerstag, 7. Juni 2012 12:11
    Sonntag, 3. Juni 2012 15:45
    Moderator

Alle Antworten

  • Hallo Hans,

    die aus meiner Sicht beste Vorgehensweise ist, den Datenzugriff in einem eigenständigen (Library) Projekt zu halten. Damit hast Du den Code vor allem an einer Stelle und was besonders wichtig ist: Du hast nicht fast den gleichen Code an mehreren Stellen.

    (Sprich: Eine Solution mit mehreren Projekten und dann entsprechenden Referenzen)

    Sollte die zusätzliche DLL störend sein: Mittels ILMerge kannst Du Assemblies zusammen fügen um dann z.B. nur noch eine EXE als Applikation weiter geben zu können.

    Mit den besten Grüßen,

    Konrad

    Freitag, 1. Juni 2012 09:46
  • Am 01.06.2012 11:46, schrieb Konrad Neitzel:
    > die aus meiner Sicht beste Vorgehensweise ist, den Datenzugriff in einem
    > eigenständigen (Library) Projekt zu halten. Damit hast Du den Code vor
    > allem an einer Stelle und was besonders wichtig ist: Du hast nicht fast
    > den gleichen Code an mehreren Stellen.
     
    Das macht nichts, Hauptsache er ist konsistent. Ich brauche Referenzen
    auf neue Tabellenelemente zur Entwicklungszeit, nicht erst zur Laufzeit.
    Wenn ich die Datenbankstruktur ändere, müssen die neuen Variabelennamen
    in allen Subprojekten bekannt sein und der Projektmanager muss
    automatisch die Abhängigkeiten erkennen und die Einzelprojekte neu
    erstellen.
     
    Hajü
     
    Freitag, 1. Juni 2012 09:58
  • Hallo Hans,

    was sich hier immer sehr gut macht ist eine automatische Generierung. Dadurch bekommst Du dann tatsächlich Abweichungen direkt zur Entwicklungszeit. Wir nutzen sehr intensiv das Entity Framework um auf unsere Datenbanken zuzugreifen.

    Wenn Du die Datenklassen manuell erstellst und pflegst, dann hast Du keine Fehler zur Laufzeit, wenn Du etwas vergisst. (Bzw. sind diese dann darauf zurückzuführen, dass es in dem Datenbankschema Abweichungen gibt. Datenbankänderungen in der Entwicklungsdatenbank müssen ja auch auf die Produktionsdatenbank aufgespielt werden.)

    Und bezüglich Abhängigkeiten erkennen: Ein Release Build bauen wir immer komplett. Egal was sich verändert hat und was nicht! Visual Studio scheint hier manchmal Probleme zu haben die dann nach einem "clean" verschwunden sind. Und da wir unnötige Risiken vermeiden wollen wenn es um die Erstellung eines Releases geht, haben wir uns diese Regel aufgestellt.

    Ich hoffe, dass ich Deine Punkte richtig erfasst habe und meine Antworten weiter geholfen haben. (Wenn nicht einfach klarstellen!)

    Mit den besten Grüßen,

    Konrad

    • Als Antwort markiert Hans-J. Ude Donnerstag, 7. Juni 2012 12:11
    Freitag, 1. Juni 2012 10:24
  • Am 01.06.2012 12:24, schrieb Konrad Neitzel:
    > was sich hier immer sehr gut macht ist eine automatische Generierung.
    > Dadurch bekommst Du dann tatsächlich Abweichungen direkt zur
    > Entwicklungszeit.
     
    Genau das meine ich ja. Unter WinForms ist das ein Klacks aber unter
    ASP.NET? Und wenn man zwei ASP und ein WinForms unter einen Hut bringen
    will wird es noch komplizierter. Ich stehe immer noch auf dem Schlauch.
     
    Ich denke mir, so ein exotisches Problem kann das doch nicht sein, dass
    ein ASP Programm in eine Datenbank schreibt und ein WinForms Programm
    das Frontend dazu ist. Wenn man den Trick kennt. Wobei der ASP Teil bei
    mir einfach zwei HTTP Handler sind, ohne Benutzeroberfläche.
     
    Vielleicht ist ein zusätzliches Datenbank Projekt, auf das die Anderen
    dann zugreifen der Schlüssel, aber damit kenne ich mich gar nicht aus.
     
    Hajü
     
    Samstag, 2. Juni 2012 17:51
  • Hi,

    Ich denke mir, so ein exotisches Problem kann das doch nicht sein, dass
    ein ASP Programm in eine Datenbank schreibt und ein WinForms Programm
    das Frontend dazu ist. Wenn man den Trick kennt. Wobei der ASP Teil bei
    mir einfach zwei HTTP Handler sind, ohne Benutzeroberfläche.

    in dem Fall würde ich aber eher auf ASP.NET Webservices setzen und diese dann aus den WinForms Anwendungen heraus ansprechen. Es macht IMHO nicht wirklich Sinn, die Datenspeicherung komplett in ASP.NET zu erledigen, die WinForms Anwendungen aber dennoch direkt an die Datenbanken anzubinden.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Hans-J. Ude Donnerstag, 7. Juni 2012 12:11
    Sonntag, 3. Juni 2012 15:45
    Moderator