2008-10-29 6 views
3

J'ai récemment eu besoin d'écrire une interface fluide pour C# qui reflétera essentiellement SQL. Oui, je suis au courant de LINQ to SQL, mais je suis intéressant pour obtenir "plus proche du métal" - ayant quelque chose qui ne fournit essentiellement rien de plus qu'un shim SQL Intellisensified au sein de C#.Interface EBNF vers fluide

Par ex,

var fq = new FluentQuery(); 
Expression<Action> = 
    () => fq.SELECT.DISTINCT(Foo.ID).FROM(Foo).WHERE(Foo.Age > 22); 

Maintenant, je pensais que ce concept pourrait être généralisé - qui est, que diriez-vous d'un EBNF général au générateur d'interface fluide? Est-ce que quelqu'un sait si une telle bête existe?

+0

Si vous le voulez maintenant, cherchez "Micro ORM" pour plusieurs options. – TrueWill

Répondre

3

je l'aime, mais vous devez vous assurer de revenir types comme HasFromAndSelect ou quelque chose comme ça si vous ne finissent pas avec fq.SELECT(Foo.ID).SELECT(Foo.Age).WHERE(Foo.Age > 22) ou fq.WHERE(Foo.Age > 22).SELECT(Foo.ID), etc.

Il y a beaucoup plus de réflexion qui doit aller dans ceci, y compris le fait que le CAPS LOCK MODE me fait mal aux yeux :)

+0

Le verrouillage des majuscules est délibéré - sert à différencier visuellement le DSL interne que vous utilisez; De plus, SQL est généralement spécifié canoniquement en majuscules. –

Questions connexes