2010-04-19 13 views
15

Quelque chose comme ça.Y a-t-il une bibliothèque dynamique Sql Builder pour .Net?

http://code.google.com/p/squiggle-sql/wiki/Tutorial.

Ceci est requis dans les cas où il est nécessaire de construire un SQL complexe à partir de l'entrée de l'utilisateur à partir de l'interface utilisateur. Actuellement, dans le projet, je travaille en utilisant la manipulation de chaînes qui est laide et difficile à maintenir.

+0

vous pouvez essayer http://sqlkata.vivida-apps.com, aC# constructeur de requête SQL – amd

Répondre

11

Essayez DbExtensions, disponible NuGet package.

+0

DbExtensions est facile à utiliser. Cependant, il a quelques problèmes de conception fondamentaux. Tout d'abord, il n'a pas beaucoup de désir INSERT IGNORE INTO fonction. Deuxièmement, c'est très rigide. Quand on fait INSERT_INTO, il ne peut pas faire INSERT_INTO ({0} ({1}, {2}), tableName, col1, col2) parce que cela va ajouter des guillemets simples autour des paramètres. Au lieu de cela, vous devez utiliser la surcharge et le code de base dans la chaîne d'entrée. Un autre exemple est de faire les VALEURS que vous devez faire VALUES (some_string) ou faire VALUE ({0} = {1}, col1, val1). Cela dit, ce n'est pas une mauvaise bibliothèque mais cela laisse beaucoup à désirer. –

+0

@SomeNewbie Postez vos commentaires [ici] (https://github.com/maxtoroq/DbExtensions/issues) et je vous aiderai. –

0

Je construis toujours la mienne ... c'est rapide et facile et vous n'avez pas besoin de compter sur des bibliothèques tierces. De plus, cela vous aide à devenir un peu plus intime avec SQL.

+1

C'est vrai si vous êtes un programmeur, mais je peux voir que la bibliothèque utilisée pour conduire une interface graphique Cela permet aux non-programmeurs/personnes de saisie de données de construire des requêtes génériques sur une base de données. Ils ne pourront jamais le faire * efficacement * mais parfois c'est utile. –

+0

Ça vous dérange de le partager? – SuperManSL

+1

Est-ce vraiment si simple? Comment gérez-vous les sous-sélections? Y a t-il un fort typage? Joindre? Aliasing? Pouvez-vous grouper des éléments dans une clause where afin que les instructions OR n'annulent pas les instructions AND? Je pourrais continuer. –

2

Pas que je suis conscient de (bien que cela ne signifie pas qu'il n'y en a certainement pas).

Qu'en est-il de Entity Framework? Il permet à la requête à construire et que traduit à SQL contre des entités:

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

Génère:

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

L'application sur laquelle je travaille est .Net 2.0. Donc EF n'est pas une option pour moi. – Amitabh

+0

Pouvez-vous utiliser un orm complet tel que NHibernate? Il vous donnera la possibilité de construire des requêtes I via l'API Criteria. –

+0

Nous utilisons nHibernate 1.2 dans notre application mais cette fonctionnalité particulière a contourné nHibernate pour des raisons de performances. – Amitabh

2

ya un problème avec LINQ to Sql?

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

Le projet pour lequel j'avais besoin était le projet .Net 2.0. – Amitabh

+0

Ça craint. Je suis désolé. – smartcaveman

+1

De plus, les éléments de filtrage ne sont pas toujours connus – Thea