2008-11-14 12 views
6

Ich habe eine ziemlich große Anwendung geerbt, die wirklich einige Aufräumarbeiten verwenden könnte. In der gesamten Anwendung ist ein Datenzugriffscode vorhanden. In Code-Hinterfragen, einige in Business-Logik-Klassen, einige in klassischen Asp-Seiten inline.Automatisch C# -Wrapper-Klassen um gespeicherte Prozeduren erstellen

Was ich tun möchte, ist diesen Code umzuformen, den gesamten Datenzugriffscode in ein paar DAL-Klassen zu entfernen.

Der gesamte Datenzugriff erfolgt über gespeicherte Prozeduren (Microsoft SQL 2000). Es gibt 300-400 von ihnen.

Es scheint, als sollte es einen automatisierten Weg geben, die Speicherprozeduren zu analysieren und automatisch C# -Methoden für jeden von ihnen zu erzeugen, wobei die Methodenparameter den gespeicherten Prozedurparametern zugeordnet werden, wobei eine Methode eine Datentabelle zurückgibt.

Ich habe keine Erfahrung mit ORM-Produkten, und ich bin nicht sicher, ob das, was ich suche, ein volles ORM ist, oder nur ein Dienstprogramm von Drittanbietern, das helfen wird, einfache Wrapper um die SP-Anrufe zu generieren .

Antwort

2

Wenn Sie Zugriff auf .NET Framework 3.5 und LINQ to SQL haben, können Sie es sehr leicht tun können, lesen Sie in diesem Video:

LINQ to SQL: Using Stored Procedures

vorhandene gespeicherte Prozeduren verwenden und Funktionen ist einfach, mit LINQ. Wir ziehen einfach die gespeicherten Prozeduren auf die O/R-Mappingoberfläche und rufen sie von das generierte Datenkontextobjekt auf.

2

Ich empfehle Ihnen, Code Smith zu ergreifen. Das Produkt enthält eine Vorlage für ORM und unterstützt vollständig das Generieren von Klassen aus DB-Schemas (und ich denke, Procs). Sie können dann alle benötigten Objekte codieren.

Eine andere Option wäre die Verwendung von LINQ to SQL.

0

Ziehen und die gespeicherten Prozeduren auf eine Daten-Set Design-Oberfläche fällt (in .net 2.0 und höher) erzeugt eine Umwicklungsfunktion

aber wenn Sie eine Menge von ihnen zu tun haben, könnten Sie besser mit oder schriftlich öffnen

  1. die Verpackung Code selbst als C# Klassen/Methoden erzeugen
  2. eine dataset.xsd Datei erzeugen dann in Visual Studio: ein einfacher Code-Generator

    zwei Optionen für diese und lassen Sie die Designer die Klassen/Methoden erzeugen für Sie

letztere kann über die Daten-Set Design-Oberfläche gehalten werden, kann aber schwierig sein, um etwas damit erzeugt (das erste Mal)

1

Mein Ansatz wäre, Denken Sie zuerst an eine höhere Ebene - Erstellen Sie Ihre Datenzugriffsklassen und -methoden so, wie es Ihren Anforderungen für Ihre vorhandene oder neue Codebasis am besten entspricht. Verwenden Sie dann die vorhandenen Prozeduraufrufe für Ihre neuen Objekte.

Ich denke nicht, dass Sie irgendeine Form der Massenautomatisierung für diese Aufgabe betrachten sollten.

0

Ähnlich wie Robert Vorschlag, haben wir unsere eigene Version von Code Smith geschrieben.

Unser "Code Generator" besteht aus zwei Teilen: SQL & Klassen.

SQL: Wird das Update generieren, wählen Sie & Delete stored procs.

C#: Werden die Klassen erzeugen und die Datei als CS-

Wir nennen sparen: sp_MShelpcolumns ‚name‘ eine Liste der Felder zu erhalten und Datentypen und führen Sie dann eine ersetzen.

Es ist keine perfekte Lösung, aber es ist sehr effektiv, um das erste 80% zu bekommen abgeschlossen

Verwandte Themen