2008-10-29 79 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