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
ORM und im Speziellen zum Beispiel das ADO .NET Entity Framework sind Werkzeuge und Begriffe die du denke ich suchst.
Lg, XX
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.
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
Danke für die Hinweise, Typisierte Datasets und LINQ to SQL, sowie der O/R Designer erfüllen genau meine Anforderungen! 😃