Ich werde wahrscheinlich für die Portierung einer vb6-Anwendung auf C# verantwortlich sein. Diese Anwendung ist eine Windows-App, die mit einer Zugriffs-DB interagiert. Der Datenzugriff ist in Basisgeschäftsobjekten gekapselt. Eine Klasse für einen Tisch im Grunde genommen. Die vorhandenen vb6-Business-Objekte lesen und schreiben über DAO in die DB. Ich habe DALs und ORMs schon ein paar Mal geschrieben, aber alle waren auf SQL Server ausgerichtet. Dieser muss auf den Zugriff und den SQL Server ausgerichtet sein. In früheren Projekten würde ich die SQL-Zeichenfolgen in den privaten Teilen des Geschäftsobjekts platzieren und den redundanten SQL-Code möglicherweise wie das Verbinden, Erstellen eines Befehls in eine gemeinsame Basisklasse verschieben, um den Code zu reduzieren.Wo setzen Sie SQL-Anweisungen in Ihre C# -Projekte?
Diesmal denke ich über das Schreiben der SQL-Zeichenfolgen in eine .settings-Datei oder eine andere Schlüssel/Werttyp-Textdatei. Ich würde dann ein SQL-Dienstprogramm schreiben, um diese Datei zu bearbeiten und mir erlauben, die parametrisierten Abfragen auszuführen und zu testen. Diese Abfragen werden im Geschäftsobjekt anhand des Namens referenziert, anstatt den SQL-Code in Code einzubetten.
Ich weiß, dass ein Standardansatz darin besteht, für jede Zieldatenbank eine DAL zu erstellen, und der Konfigurationsstatus anzugeben, welche DAL zu verwenden ist. Ich möchte wirklich nicht die zwei DAL-Klassen für jede Datenbank erstellen. Es scheint, als wäre es weniger Code, wenn ich nur die korrekte Abfrage nach Schlüsselname referenziert hätte und den richtigen Verbindungstyp hätte.
Also, macht ihr Jungs so etwas? Wie würden Sie dieses Problem angehen? Was funktioniert am besten für Sie?
Danke!
Ich habe diesen Ansatz verwendet und ich mag es. Im Gegensatz zu den meisten Leuten bin ich nicht damit einverstanden, während der Laufzeit Code ändern zu können, sogar einfache SQL-Anweisungen, daher ist die Tatsache, dass er mit der Assembly kompiliert wird, ein Vorteil für mich. – Chris
Freut mich zu hören, dass dieser Ansatz von anderen genutzt und begrüßt wird! :-) Und ich stimme zu - manchmal Back Sachen in Ihre kompilierten Bits ist ein Plus. –
Verwenden Sie anstelle von namespacePart this.GetType(). Namespace für die aktuelle, dynamische Version und typeof (Program) .Namespace für static. Natürlich, wenn Sie es in die Programmklasse als statisch setzen. Vergessen Sie nicht, wenn Ihre SQL-Datei im SQL-Verzeichnis ist, beziehen Sie sich darauf durch "SQL.StatementName.sql" – Harry