2012-04-02 12 views
2

Ich verwende Dapper für eine generische DAL, die für Oracle und SQL Server verwendet werden kann. Was wäre der beste Weg, um Paging- und Sortiermethoden bereitzustellen, so dass es sowohl für SQL als auch für Oracle funktioniert, ohne die SQL-Statements manuell zu erstellen/ändern? Etwas wie:Dapper ORM und Paging und Sortierung Erweiterung

var users= Dapper 
      .Query<User>(sqlStatment 
         .Skip(10) 
         .Take(10)); // where sqlStatment string 
+0

Ich weiß nicht, ob du dich tust ein Gefallen mit einer generischen Methode.Oracle hat ROWNUM, während SQL Server hat TOP/ROW_NUMBER(). Ich würde eine Spezifikation für jeden der beiden implementieren. – Alex

Antwort

0

Wie @ Alex wies darauf hin, Paging unterschiedlich auf den beiden Datenbanken Ihrer Wahl am besten getan wird, um die beste für die meisten optimierte Abfragen mit getrennten Abfragen für jeden zu schreiben.

Es wäre wahrscheinlich am besten, zwei Baugruppen Datenanbieter jeder einzelnen Datenbank dienen zu erstellen:

  • Data.Provider.Sql
  • Data.Provider.Oracle

und konfigurieren Sie Ihre Anwendung für eines der beiden. Ich habe absichtlich erstellt auch Data.Provider Namespace (die Teil eines Daten Montage sein können und definiert alle Datenprovider-Schnittstellen (innerhalb Data.Provider), die oberen paar Anbieter implementieren.

+0

Dank Rob. Ich werde wahrscheinlich verschiedene SQL-Anweisungen für jeden Typ erstellen und immer noch die gleiche Klassen/Methoden – Shuaib

+0

@Shuaib: Ich schlage vor, dass Sie eher Schnittstellen wie vorgeschlagen verwenden, da dies Ihren Code leicht über IoC testbar macht.Um diese in den oberen Schichten zu verwenden, beziehen Sie sich immer auf diese Schnittstellen.Ihre Schnittstellen sollten alle Methoden definieren, die Sie benötigen Erfüllen Sie Ihre Datenprozessanforderungen . –

+0

danke für den Vorschlag. Können Sie mir ein paar Details über die architektonische Gestaltung dieses Ansatzes geben? – Shuaib