Idee für Anbindung DB (als *.txt) und Objekt



  • Hallo,

    ich habe folgendes Problem: In einer zukünftigen Software gibt es Bestellungen, die mehrere Produkte enthalten. Ein Produkt kann mit verschiedenen "Extras" bestückt werden (Anzahl n).

    Derzeitiger Stand:

    Klasse Bestellung
    Klasse Produkt
    Klasse ExtrasListe (einfach verkettet o.Ä)
    Klasse Extras

    So, nun sind die verschiedenen Extras, bestehend aus 3-4 Attributen, in einer "DB" in Form einer Textdatei. Wie würdet ihr nun die Verbindung/Schnittstelle realisieren. Mir fehlt da irgendwie jeder Ansatz. Würd emich über ein paar Anregungen freuen. Bei fragen immer her damit 🙂

    Viele Grüße



  • Dann mache sie nicht als Textdatei.
    Wenn Du schon ein RDBMS hast dann sollte auch alle da drin sein.
    Ist mit NET und VS ja noch einfacher als mit den anderen Sprachen.



  • Das ist es ja, ein RDBMS haben wir nicht... Es gehtmir lediglich um eine geeignete Form, die Daten aus dem Textfile herauszulesen und zwischenzuspeichern. Würde man so etwas über eine eigene Klasse z.B. "Textfile Connect" lösen?



  • Nimm doch einfach eine File-basierende Datenbank! Oder implementiere einen CSV Reader / Writer als "Datenbank"-Schicht.



  • Sowas macht man eigentlich immer über einen PersistenzManager, welcher die Verantwortlichkeit hat, deine Objekte zu speichern und zu laden. Stichwort: Trennung von fachlicher Logik und Technik.

    Es spielt für deine eigentliche Logik ja keine Rolle wie die Daten nun gespeichert werden (also z.B. in einer Textdatei oder in einem RDBMS). Dafür ist eine eigene Komponente zuständig, welche sich genau um diese Details kümmert. Prinzipiell sähe das so aus (sehr primitiv):

    public interface IPersistenceManager {
    
         void persist(Bestellung b);
         Bestellung load(object suchkriterieren);
    }
    
    public class TextFilePersistenceManager : IPersistenceManager {
      //Hier logik für Textdateien implementieren 
    }
    
    public class SQLPersistenceManager : IPersistenceManager {
      //Hier logik für RDBMS implementieren 
    }
    
    IPersistenceManager myManager = new TextFilePersistenceManager();
    ...
    

    wie du siehst, kannst du einfach die allgemeine Schnittstelle (IPersistenceManager nutzen, ohne dich überhaupt darum kümmern zu müssen ob das ganze nun in einer Textfile oder in einem RDBMS steht.
    Wie gesagt das obige Beispiel soll das nur prinzipiell zeigen, normal gehört da noch mehr dazu, aber sollte glaub verständlich sein. Gibt übrigens bestimmt auch im C# Bereich schon einige verfügbare Frameworks für genau solche Aufgaben.



  • Also wenn man NET verwendet dann kann man auch z.B. SQL Compact oder SQLLITE verwenden.
    Alles andere ist quatch da ihr genau das machen wollt was es mit einem RDBMS schon gibt.UNd schlimmstenfalls verwendet eben MDB.



  • Was spricht gegen XML?

    Ist beides, eine Datenbank und Textbasiert 😉



  • Die andere Herangehensweise wäre ein strong-typed DataSet, welches über die Serialiserschnittstelle auf die Festplatte gesichert und wieder geladen werden kann. Dann muss allerdings der komplette Datenbestand auf einmal in den Arbeistspeicher geladen werden.


Log in to reply