2010-04-19 8 views

Antwort

11

DbExtensions, erhältlich als NuGet package Versuchen.

+0

DbExtensions ist einfach zu bedienen. Es hat jedoch ein paar grundlegende Design-Probleme. Erstens, es hat nicht viel Lust INSERT IGNORE INTO Funktion. Zweitens ist es sehr starr. Wenn man INSERT_INTO ausführt, kann er INSERT_INTO ({0} ({1}, {2}), tableName, col1, col2) nicht ausführen, da dies einfache Anführungszeichen um die Parameter herum hinzufügt. Stattdessen müssen Sie die Überladung und im Grunde Hardcode in der Eingabezeichenfolge verwenden. Ein anderes Beispiel sind die VALUES, die Sie entweder VALUES (some_string) oder VALUE ({0} = {1}, col1, val1) tun müssen. Damit ist es keine schlechte Bibliothek, aber es lässt viel zu wünschen übrig. –

+0

@SomeNewbie Veröffentlichen Sie Ihre Kommentare [hier] (https://github.com/maxtoroq/DbExtensions/issues) und ich werde Ihnen helfen. –

0

Ich baue immer meine eigenen ... es ist schnell und einfach und Sie müssen nicht auf Bibliotheken von Drittanbietern verlassen. Außerdem hilft es Ihnen, mit SQL etwas vertrauter zu werden.

+1

das wahr ist, wenn Sie ein Programmierer sind, aber ich kann diese Bibliothek sehen wird verwendet, um eine GUI zu fahren Dadurch können Nicht-Programmierer/Dateneinsteiger generische Abfragen für eine Datenbank erstellen. Sie werden es niemals * effizient * können, aber manchmal ist es nützlich. –

+0

Haben Sie etwas dagegen, es zu teilen? – SuperManSL

+1

Ist das wirklich so einfach? Wie gehen Sie mit Subselects um? Gibt es starke Typisierung? Beitritt? Aliasing? Können Sie Elemente in einer where-Klausel gruppieren, sodass OR-Anweisungen die AND-Anweisungen nicht ungültig machen? Ich könnte weitermachen. –

2

Nicht, dass ich bewusst bin (obwohl das nicht bedeutet, dass es definitiv nicht ist).

Was ist mit Entity Framework? Es ermöglicht die Abfrage aufgebaut werden und übersetzt das zu SQL gegen Einheiten:

customers.OrderBy(c => c.Name).Skip(10).Take(20) 

Erzeugt:

SELECT value c 
FROM NW.Customers AS c 
ORDER BY c.Name skip 10 limit 20; 
+1

Die Anwendung, an der ich arbeite, befindet sich in .Net 2.0. Also EF ist keine Option für mich. – Amitabh

+0

Können Sie eine vollständige Orm wie NHibernate verwenden? Es wird Ihnen die Möglichkeit geben, I-Abfragen über die Kriterien-API zu erstellen. –

+0

Wir verwenden nHibernate 1.2 in unserer Anwendung, aber diese spezielle Funktionalität hat aus Leistungsgründen nHibernate umgangen. – Amitabh

2

Alles falsch mit Linq-to-Sql?

var dc = new YourDataContext(); 
var query = dc.TableName.Where(x=>x.MatchesYourPredicate); 
Console.WriteLine(dc.GetCommand(query).CommandText); 
+0

Das Projekt, für das ich das benötigte, war .Net 2.0 Projekt. – Amitabh

+0

Das ist scheiße. Es tut mir Leid. – smartcaveman

+1

Auch die Filterelemente sind nicht immer bekannt – Thea