2008-10-29 74 views
3

我最近有需要为C#编写流畅的接口,它将本质上反映SQL。是的,我知道LINQ to SQL,但我很有兴趣“更接近金属” - 拥有的东西基本上只提供了一个Intellisensified SQL Shim C#之内。EBNF流畅接口

例如,

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

现在,我就在想,这个概念可以概括 - 那就是,怎么样一般EBNF以流畅的接口生成器?有谁知道这样的野兽是否存在?

+0

如果您现在想要,请在“Micro ORM”上搜索多个选项。 – TrueWill 2011-12-17 22:52:49

回答

3

我喜欢它,但你必须确保返回像HasFromAndSelect或类似的类型,因此你不fq.SELECT(Foo.ID).SELECT(Foo.Age).WHERE(Foo.Age > 22)fq.WHERE(Foo.Age > 22).SELECT(Foo.ID)结束了,等

有更多的想法,需要进入这包括大写锁定模式正在伤害我的眼睛的事实:)

+0

大写锁定是故意的 - 用于在视觉上区分您正在使用的内部DSL;另外,通常在cap中指定SQL。 – 2009-01-27 11:31:47