Laden...

Komplexes SQL-Skript und typisierte DataSets

4 Antworten
1,389 Aufrufe
Letzter Beitrag: vor 15 Jahren
Komplexes SQL-Skript und typisierte DataSets

verwendetes Datenbanksystem: MSSQL 2005

Hallo,

Ich verwende .NET 2.0 und ADO.NET mit typisierten DataSets. Für die einzelnen DB-Tabellen habe ich TableAdapter definiert, welche dann die Queries etc. beinhalten für die jeweilige Tabelle.

Nun habe ich aber im Management Studio ein SQL-Skript erstellt, welches gewisse Aktionen ausführt, welches mehrere Tabellen betrifft. Z.B. werden anhand von Daten in Tabelle x in den Tabellen m und n neue Zeilen eingetragen und in anderen Tabellen werden Zeilen z.B. gleichzeitig anhand von den Daten in Tabelle x gelöscht. Also habe ich SELECTs, INSERTS und DELETEs.

Da wir bisher noch keine Stored Procedures haben möchte das ganze aber nicht als SP in der DB speichern. Möchte gerne das Skript im "Code" gespeichert haben, damit wir alles am gleichen Ort haben. Nun weiss ich aber nicht wie ich das am elegantesten einbaue. Ich könnte das natürlich "manuell" einbauen und die DataSets ignorieren (mit SqlCommand etc.), anderseits gibt es vielleicht eine möglichkeit das sauberer zu machen in dem ich das (typisierte) DatSet verwende und das Query dort platziere. Es gibt dort ja die Möglichkeit Queries hinzuzufügen, allerdings kann man dort nur entweder Inserts, Selects oder z.B. Update Queries erstellen, nicht aber gemischte...

Wie würdet ihr das machen?

Gruss, Shi

Build something that's idiot proof, and they'll build a better idiot

Der TableAdapter ist dazu gedacht recht einfache Abfragen und Inserts/Deletes durchzuführen und einen typisierten Zugriff auf die Daten zu ermöglichen.

Er ist nicht dafür konzipiert komplexe Sachen im angeschlossenen DataSet durchzuführen.

Wenn du soetwas machen willst, erstelle deine Abfrage/Procedure in einer Partial Class, führe die Aktion per Execute-NonQuery/Scalar, DataReader oder DataAdapter aus und behandele die betroffenen Tabellen dann selber.

Ich würde das als Stored Procedure laufen lassen - schon rein aus Performance-Gründen. Ich persönlich finde das auch deutlich wartbarer - gerade bei grösseren Scripts.

Ist ja kein Argument, dass ihr noch keine SP habt und deswegen keine nutzt. 😉

Ja, das Argument ist natürlich schon schwach, aber die Leute bei uns sind meistens "Traditionalisten" - kommt mal ne neue Idee fallen sie gleich in Ohmacht 😉 Darum versuche ich nicht immer gegen Windmühlen zu kämpfen.

Habe es nun so gemacht wie FZELLE es beschrieben hat, gemäss Beispiel von: http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.executenonquery%28VS.80%29.aspx

Build something that's idiot proof, and they'll build a better idiot