Dataset / Datetable zentral zur Verfügung stellen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von michl75.

    Dataset / Datetable zentral zur Verfügung stellen

    Hallo,

    ich habe ein Dataset mit verschiedenen Tabellen... gebunden an MySQL Server.

    Eine Tabelle enthält per Datenblob eine Preisliste, die doch recht umfangreich ist. Mehrere 10MB...
    Das Laden kann schon mal etwas dauern.

    Jetzt bin ich auf die Idee gekommen, diese Tabelle (Dataset per Designer etc. / typisiert...) irgendwie zentral zur Verfügung zustellen, so dass nicht jedes mal wenn eine Form geöffnet wird auch die ganze Tabelle neu geladen werden muss.

    Änderung werden an dieser Tabelle nur vom Admin... die User können alle nur anzeigen/anguggn.


    Bin mir nicht sicher ob die so eine gute Idee is... aber damit wäre das Problem mit der doch manchmal langen Wartezeig rum.


    Was meint Ihr zu dieser Idee? Vollkacke oder ne ist`s ne Möglichkeit?

    Gruß Michl
    @michl75 Packe die Instanz dieser Tabelle in eine statische Datenklasse (alles Shared oder Modul), da kann vom ganzen Programm aus mit dem Namen der Klasse / des Moduls drauf zugegriffen werden.
    Instanziiert und initialisiert wird das ganze beim Start der MainForm. Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Seit einiger Zeit schon programmiere ich an meine Datasetse immer ein Public Shared Dts dran, was auch nur ein einziges mal instanziert wird.
    Und in meim Code nutze ich nur dieses eine - Projekt-weit.
    Hier wie dieser "Fast-Singleton" gebaut wird:

    VB.NET-Quellcode

    1. Partial Public Class StechuhrDts
    2. Public Shared ReadOnly Dts As StechuhrDts = CreateDts()
    3. Private Shared Function CreateDts() As StechuhrDts
    4. dim dts = New StechuhrDts
    5. 'allerlei Initialisierungen...
    6. return dts
    7. End Function
    Im Zusammenspiel mit meine Helpers ist das alles eiglich recht einfach, aber ohne Helpers musste dir was ausdenken, wie du es hinbringst, dass der "Pseudo-Singleton" auch tatsäachlich zur Datenquelle aller Forms wird, die du je öffnest.
    Aus Neugier, passend zu dem Thema:

    reicht es, wenn ich beim Öffnen eines neuen Forms folgende Zeile einfüge:
    subform.dataset= mainform.dataset
    die BindingSources müssen auch umgestellt werden, aber bei direkten Zugriffen per Quellcode hat die Methode oben funktioniert. Gibt es da einen versteckten Haken oder so, auf den man aufpassen muss?
    Option strict = on

    If it's stupid and it works it ain't stupid.