Dataset only -> DB / Welches System und wie?

  • VB.NET
  • .NET 4.0

Es gibt 93 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    ErfinderDesRades schrieb:

    Wieso braucht man für Sqlite keine Runtimes - was installierst du denn dann, wenn du SqLite installierst?

    wird das nicht alles mit dem Programm "ausgeliefert"? Also klar - ich brauch das Nuget-Paket dazu in Visual-Studio, aber am Ende sollte doch alles "reinkompiliert" werden..

    ErfinderDesRades schrieb:

    Sqlite hab ich vor Jahren nicht lauffähig bekommen, dann liefs mal für 'ne weile, seit FW4 wieder nicht.

    Das Problem scheint zu sein, dass die Mappings für SQLite nicht geladen werden können, soweit ich das beurteilen kann


    Kasi schrieb:

    versuche es mit einer .mdb statt mit .accdb
    die .mdb sollte zum test doch reichen

    hi, danke - ändert aber leider nix an den benötigten runtimes... :(
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Ich schmeiß einfach mal das entityFramework in Verbindung mit SqlExpress in den Raum.
    Alles andere was ich hier lese sieht ziemlich kompliziert aus und für jeden furz muss man irgendwas anderes schreiben. Für mal eben scheint es nicht geeignet zu sein.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Das ist halt das Problem wenn man im 21. Jahrhundert noch auf Datasets setzt, anstatt direkt auf einen ORM, wie zum Beispiel Entity Framework.

    Vollzitat entfernt. ~Thunderbolt
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    ErfinderDesRades schrieb:

    Ich kenns auch nur, dass MySql-Datenmodelle mittels PHP-Admin gebaut werden, und dassis ist eine echt mega-dämliche Oberfläche, bei der man blöde wird, wenn man Relationen anlegen will, Not-Null-Felder, DefaultValues und Kram.
    Ich habe gute Erfahrungen mit der MySQL Workbench gemacht.
    Ist allerdings schon eine Weile her und die aktuelle Version kenne ich nicht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    MrTrebron schrieb:

    Akanel schrieb:

    Ich schmeiß einfach mal das entityFramework in Verbindung mit SqlExpress in den Raum....

    Das ist halt das Problem wenn man im 21. Jahrhundert noch auf Datasets setzt, anstatt direkt auf einen ORM, wie zum Beispiel Entity Framework.
    Welches Problem?
    Dataset hat mit SqlExpress kein Problem.
    Als Single User, oder wie meinen?

    Vollzitat entfernt. ~Thunderbolt
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Ich meine garnet.
    Also ich weiss grad nicht was du als "das Problem" bezeichnest.

    Also wenn kein funktionierender DB-Provider installiert ist - da hat ein ORM doch exakt dasselbe Problem wie ein Dataset.

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    Du schreibst, das Dataset sich einfach auf SQLExpress umstellen lässt und meine Frage ist dazu, ob das nur für Single User Anwendungen gilt, oder sich das so Out-of-the-box als Multiuser Anwendungen nutzen lässt.

    Ich rede nicht von fehlenden Treibern.

    Datasets sind halt, imho, nicht objektorientiert.

    Eine Person ist ein Objekt und keine Spalte im Dataset.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    MrTrebron schrieb:

    Du schreibst, das Dataset sich einfach auf SQLExpress umstellen lässt und meine Frage ist dazu, ob das nur für Single User Anwendungen gilt, oder sich das so Out-of-the-box als Multiuser Anwendungen nutzen lässt.
    Wenn man als Datensenke des Datasets eine Datenbank versendet, isses Multiuserfähig.
    Der Dataset-Only-Ansatz ist nicht multiuserfähig, weil er als Datensenke einfach eine Xml-Datei verwendet.
    Wie gesagt: ich kann da überhaupt kein Problem erkennen - das einzige Problem, was in diesem Thread problematisiert wird, ist eben ein Problem mit Treibern, daher zog ich die Möglichkeit in Betracht, du könnest das mit "das Problem" meinen.

    Von wegen objektorientiert: Wieder weiss ich überhaupt nicht, was du meinst.
    Ja, eine Person ist keine Spalte im Dataset - da hast du recht.
    Hat irgendjemand das etwa behauptet? Ich zumindest nicht.

    Ob eine Person ein Objekt ist, kann man diskutieren. Wenn man es so sieht, dann gilt es aber für Dataset-generierte Objekte ebenso wie für ORM-generierte.

    Aber ich werde diese Diskussion jetzt nicht weiter fortsetzen.
    Ja, wenn Datasets nicht hochgelobt werden sinkt die Lesekompetenz und das Verständnis.

    Datasets sind veraltet. Aus mehreren Gründen.
    Einer davon ist das Datasets nicht zur objektorientierten Programmierung beitragen, sonder Recordset vor und zurück in modernem Gewand.
    Alle, auch nicht benötigte Datensätze zu laden und auch alle nicht modifizierten wieder zu speichern macht halt keinen Sinn, wiederspricht aus meiner Sicht auch dem ACID Prinzip, macht Locking unnötig schwer.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    tragl schrieb:

    Kasi schrieb:

    bist du dir da sicher, bei einer .mdb muss Access nicht Installiert sein


    access nicht aber die runtimes.. hab's gerade mit mdb getestet.


    welche Einstellung hast du denn AnyCPU oder ????
    stelle auf x86 und führe mein Bsp. aus, speichere die .mdb in einem Verzeichnis auf dein Netzlaufwerk.

    MrTrebron schrieb:

    Datasets sind veraltet. Aus mehreren Gründen.

    Da meine Anwendung aber nun komplett auf DataSet aufgesetzt ist - wird es wenig Sinn machen auf was anderes zu wechseln, richtig? Es wird ja ein riesen Aufwand sein...

    Kasi schrieb:

    telle auf x86 und führe mein Bsp. aus, speichere die .mdb in einem Verzeichnis auf dein Netzlaufwerk.

    jo das habich leider verpennt während der Entwicklung - wenn ich auf x86 umstelle hab ich auf einma keine Daten mehr im DataSet... :(
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tragl“ ()

    tragl schrieb:


    jo das habich leider verpennt während der Entwicklung - wenn ich auf x86 umstelle hab ich auf einma keine Daten mehr im DataSet... :(


    also das bsp. von Post#20 wird funktionieren im Netzlaufwerl, du wirst Arbeitgeber davon überzeugen
    müssen ein wenig "Kohle" locker zumachen (Sql-Server etc...)

    ich fühle mit dir, alle wollen das dies jennes .... und wenn mann sagt ...kosten dafür sind xxxxx
    schweigt jeder

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    Kasi schrieb:

    müssen ein wenig "Kohle" locker zumachen (Sql-Server etc...)

    Das spielt "keine Rolle" - denn wir sind ein Konzern und die Serverlandschaft bei uns ist groß genug, da macht ein kleiner SQL den Bock nicht fett.

    Es soll aber nun erstmal ohne großen IT-Aufwand getestet werden - dann steht die Entscheidung an ob mein Programm mit in unsere vorhandene Software integriert oder standalone bleiben wird.
    Heißt für mich - erstmal "notdürftig" multiuser-fähig machen das Teil. Soll das Standalone bleiben wird's ne Großbaustelle mit richtigem SQL-Server (wobei dann ja "nur" noch Recordlocking im Raum steht, der Rest funzt
    ja dann schon mit DB (welche is erstmal egal)) - wird's ins bestehende System übernommen wird kein weiterer SQL-Server gebraucht und mein Aufwand für Multiuser hat sich in Grenzen gehalten.

    Ich hoffe man versteht,was ich damit meine ;)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Also, ich würde jetzt mal die Variante mit DataSet und SQL-Express in Betracht ziehen.
    Ich hab gestern abend den Server parat gemacht, mit EDRs DB-Generator den SQL-Query erzeugen lassen und es kommt
    folgender Fehler:

    SQL-Abfrage

    1. Warnung: Die maximale Schlüssellänge für einen nicht gruppiert-Index beträgt 1700 Bytes. Der U_Ansicht0-Index hat eine maximale Länge von 8000 Bytes. Bei einigen Kombinationen hoher Werte schlägt der INSERT-/UPDATE-Vorgang fehl.
    2. Msg 1785, Level 16, State 0, Line 3
    3. Das Einführen der FOREIGN KEY-Einschränkung "FK_Ansicht_Tree1" für die Tree-Tabelle kann Schleifen oder mehrere Kaskadepfade verursachen. Geben Sie ON DELETE NO ACTION oder ON UPDATE NO ACTION an, oder ändern Sie andere FOREIGN KEY-Einschränkungen.
    4. Msg 1750, Level 16, State 1, Line 3
    5. Die Einschränkung oder der Index konnte nicht erstellt werden. Siehe vorherige Fehler.
    6. Completion time: 2020-10-01T22:02:42.9479898+02:00


    Also ich will gern erstmal alle Tabellen samt Beziehungen und Feldeinstellungen/Feldtypen in der Datenbank vom SQLExpress anlegen (natürlich nicht alle per Hand ;) )
    Erst dann kümmer' ich mich um die Daten selbst.
    Was hab' ich für ein Todo?
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    OK, andersrum gefragt:

    SQL-Abfrage

    1. Das Einführen der FOREIGN KEY-Einschränkung "FK_Ansicht_Tree1" für die Tree-Tabelle kann Schleifen oder mehrere Kaskadepfade verursachen

    gibt's eine Einstellung in SQL-Express, um das zuzulassen? Access meckert hier nicht rum und lässt es zu.

    Beispiel:
    Ich hab' hier eine Tabelle "Ansicht", eine Tabelle "Tree" - da brauch ich die Daten aus "Ansicht" z.B. 2x - aber genau da meckert er, es
    muss doch möglich sein ?(

    Anderes Beispiel:


    hier meckert er dann dass Bundesland 2x an den Mitarbeiter gelangt. 1x über Standort (jeder Standort hat ein Bundesland) und 1x an Mitarbeiter direkt (jeder Mitarbeiter wohnt in einem Bundesland)
    Das ist in meinen Augen auch sinnvoll so, SQL motzt aber dann rum.
    Wäre schön wenn es hier eine Einstellung in SQL-Express dazu gibt, ansonsten bleibt mir nur der Weg mit Access

    Edit:
    Alle Beziehungen sind wie folgt eingestellt:


    ich möchte nicht, dass untergeordnete Einträge gelöscht werden - es soll dann lieber die Meldung erscheinen, dass noch untergeordnete Elemente vorhanden sind.
    Aktualisieren soll aber möglich sein sonst hab' ich Schrott in den Daten.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „tragl“ ()

    Ich muss gestehen, ich hab nichtmal das Problem verstanden, wasser anmeckert.
    Das Schleifen iwie nicht aufgehen wundert mich nicht, aber mehrere Kaskadepfade...
    Da muss man mal Grundlage-Recherche betreiben, warum das nicht zulässig ist.
    Ich vermute auch, dass das Problem nur mit Text auftritt - aber sicher bin ich nicht.