Laden...

Elegante Addressierung von Tabellen und Spalten

Erstellt von qduda vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.289 Views
Q
qduda Themenstarter:in
7 Beiträge seit 2011
vor 12 Jahren
Elegante Addressierung von Tabellen und Spalten

verwendetes Datenbanksystem: <SQL/CE >

Hallo zusammen,

ich verfolge einige Threads hier auf dem Forum schon eine ganze Weile. Jetzt habe ich allerdings eine Frage und habe mir deshalb einen Account angelegt. Vorweg ich habe noch nicht wirklich viel mit C# in Verbindung mit Datenbanken gemacht und bin gerade dabei mich einzuarbeiten. Ich bin soweit das ich eine SQL(CE) Datenbank anbinden kann und die unterschiedlichen Tabellen in DataGridViews ausgeben und editieren sowie die Datenbank updaten kann.
"Wie poste ich richtig" weist mich darauf hin, dass ich weder Anfängerfragen posten noch den Thread in der falschen Foren Section erstellen soll. Also ich hoffe jetzt nicht, dass ihr mich direkt umbringt, falls ich mich vertan habe. 😦

Allerdings frage ich mich, wie ich meinen Code "eleganter" gestalten kann.

Ein Beispiel:


DataRow rowToAdd = ds.Tables["Stifte"].newRow();
rowToAdd["Art"] = "Kugelschreiber";
rowToAdd["Farbe"] = "Blau";
ds.Tables["Stifte"].Rows.Add(rowToAdd);

Ist es nicht irgendwie möglich das Schema meiner Datenbank in Visual Studio so zu integrieren das die Datenbank als Typ bekannt wird, samt Bezeichner?

Damit so was wie:


rowToAdd[ds.Stifte.Art] = "Kugelschreiber";

möglich ist?

Ich kann mir jetzt händisch eine große Struct erzeugen, die mir alle Tabellen und Spalten Namen abbildet, dann wäre es möglich...


    struct dsStruct
    {
        string stifte = "stifte";
        struct Stifte
        {
            string farbe = "farbe";
            string art = "art";
        }
        string autos = "autos";
        struct Autos
        {
            string farbe = "farbe";
            string geschwindigkeit = "geschwindigkeit";
        }
    }

Jetzt wäre folgendes möglich:


rowToAdd[dsStruct.Stifte.farbe] = "Gelb";

Aber 1. ist das bei einer großen Datenbank wirklich sehr aufwendig.
2. Ist der Ansatz nicht generisch.
3. Würde es mich wundern wenn es hierzu keine optimaler Lösung gibt. 😉

Wäre super wenn mir hier jemand auf die Sprünge helfen könnte.

Ich arbeite übrigens mit diesem Buch:
http://openbook.galileocomputing.de/visual_csharp_2010/
Wenn jemand für den Schwerpunkt Datenbanken und C# ein besseres Werk kennt, bitte ich um eine Empfehlung.

Sollte meine Frage wirklich zu den Grundlagen gehören, dann tut es mir für den Post leid. Aber ich habe jetzt schon einige Beispielprogramme durchgekaut, MSDN und google bemüht und habe nichts gefunden. Auch hier auf dem Forum nicht.

Danke im voraus!

Grüße,
Q

1.378 Beiträge seit 2006
vor 12 Jahren

ORM und im Speziellen zum Beispiel das ADO .NET Entity Framework sind Werkzeuge und Begriffe die du denke ich suchst.

Lg, XX

Q
qduda Themenstarter:in
7 Beiträge seit 2011
vor 12 Jahren

Also ADO.net scheint das nicht abzudecken. Dann bleibt mir wohl echt nichts anderes übrig als meinen Ansatz so zu verwenden.

Aber Danke dennoch für den Hinweis.

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo qduda,

nein ADO.NET deckt dies nicht ab aber dies hat xxxprod auch nicht angesprochen.
Denn das ADO.NET Entity Framework macht genau dies was du machen willst.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

194 Beiträge seit 2006
vor 12 Jahren

Hallo qduda

Meinst du evtl so etwas wie DataRowCollection.Add-Methode (Object[])?

Gruss

Balaban_S

2.760 Beiträge seit 2006
vor 12 Jahren

Ziemlich genau das:


// Untypisiertes DataSet
DataRow rowToAdd = ds.Tables["Stifte"].newRow();
rowToAdd["Art"] = "Kugelschreiber";
rowToAdd["Farbe"] = "Blau";
ds.Tables["Stifte"].Rows.Add(rowToAdd);

// Typisiertes DataSet:
neuerStift.Art = "Kugeschreiber";
neuerStift.Farbe = "Blau";


bekommst du mit typisierten DataSets hin wenn du unbgedingt bei dieser Technik bleiben möchtest (angeschaut haben sollte man es sich ohnehin mal da "wichtiger" Bestandteil von ADO.Net).
Ansonsten kann ich mich den Empfehlungen der anderen es mal mit einem O/R Mapper wie dem Entity-Framework zu versuchen nur anschließen.

P.S.: Wäre in deinem Buch folgendes Kapitel: Gallileo Open Book - Stark typisierte DataSets

Q
qduda Themenstarter:in
7 Beiträge seit 2011
vor 12 Jahren

Danke für die Hinweise, Typisierte Datasets und LINQ to SQL, sowie der O/R Designer erfüllen genau meine Anforderungen! 😃