Wie werden gespeicherte Prozeduren in C # -Code verwaltet?

8

Ich bin ziemlich neu hier, also bitte vergib mir, wenn ich irgendeine Abweichung von den Regeln dieser Website mache.

Ich versuche den besten Weg zu finden, die Namen einer gespeicherten Prozedur im Code zu verwalten.

Wenn ich gerade eine gespeicherte Prozedur anrufe, verwende ich diesen Code:

%Vor%

Aber ich denke nicht, dass die Angabe des Namens der gespeicherten Prozedur im Code eine kluge Idee ist, da es schwer zu verfolgen ist.

Ich habe über Enum oder app.config solutions nachgedacht, aber ich bin mir nicht sicher, ob das die besten Wege sind.

Jede Idee wird sehr geschätzt.

    
Rotem Orbach 21.12.2013, 15:10
quelle

5 Antworten

7

Sie können eine Klasse mit konstanten Eigenschaften haben, die Namen der SPs haben. Und diese Klasse in einer separaten Klassenbibliothek (dll) haben. Es ist auch nicht gut, sp_ als Start des Verfahrens zu haben, siehe den Link Ссылка

%Vor%     
Priyank 21.12.2013, 15:24
quelle
5

Am Ende läuft es immer auf die konkrete Namenskette des SP hinaus, egal was du tust. Sie müssen sie manuell synchronisieren. - Umsonst ...

Sie könnten dafür Konfigurationsdateien verwenden, aber dieser zusätzliche Aufwand lohnt sich nur, wenn sich die Namen häufig ändern oder sie nach der Kompilierung änderbar bleiben müssen.

    
Thomas Weller 21.12.2013 15:17
quelle
3

Sie können die Aufrufe in eine einfache Gateway-Klasse einbinden:

%Vor%

Alternativ können Sie POCOs verwenden, die wissen, wie sie mit der Datenbank interagieren:

%Vor%

Der Vorteil besteht darin, dass nicht nur der SP-Name an einem eindeutigen Ort gespeichert wird, sondern auch die Logik, wie Daten aus dem Dataset an derselben Stelle extrahiert werden.

    
Sklivvz 21.12.2013 15:18
quelle
1

Ich sehe kein großes Problem mit dem, was Sie tun. Sie müssten den SP-Namen irgendwo speichern, entweder in der Abfrage oder in einer anderen Konfigurations- oder Hilfsfunktion.

Abhängig von der Spezifikation tendiere ich zu einem Repository für CRUD-Operationen. Daher weiß ich, dass alle Datenzugriffe einschließlich aller SP-Aufrufe in der ISomeRepository-Implementierung enthalten sind.

    
Chris W 21.12.2013 15:24
quelle
0

Wenn ich mit gespeicherten Prozeduren in C # arbeite, befolge ich die folgenden Regeln.

  1. Jede gespeicherte Prozedur wird nur einmal im Code verwendet, damit ich sie habe nur ein Ort zum Aktualisieren. Ich hasse Magic String und vermeide es Diese gespeicherten Prozeduren werden jedoch nur einmal in der Datenzugriffsebene verwendet (z. B. Repositorys, ReadQueries usw.).

  2. Für CRUD-Operationen wird das Muster "sp_ {Erstellen / Lesen / Aktualisieren / Löschen} {EntityName}" verwendet.

Wenn Sie einen einzelnen Ort mit allen gespeicherten Prozeduren haben möchten, können Sie eine static class mit Logik erstellen, um die Namen der gespeicherten Prozeduren zu erstellen.

    
Ilya Palkin 21.12.2013 22:53
quelle

Tags und Links