【问题标题】:EBNF to fluent interfaceEBNF 到流畅的界面
【发布时间】:2010-09-19 18:03:36
【问题描述】:

我最近需要为 C# 编写一个流畅的接口,该接口基本上可以镜像 SQL。是的,我知道 LINQ to SQL,但我对“更贴近金属”很感兴趣——在 C# 中提供智能感知 SQL 垫片。

例如,

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

现在,我在想这个概念可以推广——也就是说,通用 EBNF 到流式接口生成器怎么样?有谁知道这样的野兽是否存在?

【问题讨论】:

  • 如果您现在需要,请在“Micro ORM”中搜索多个选项。

标签: c# sql linq fluent-interface ebnf


【解决方案1】:

我喜欢它,但你必须确保返回 HasFromAndSelect 之类的类型,这样你就不会以 fq.SELECT(Foo.ID).SELECT(Foo.Age).WHERE(Foo.Age &gt; 22)fq.WHERE(Foo.Age &gt; 22).SELECT(Foo.ID) 等结束。

还有更多的想法需要深入探讨,包括 CAPS LOCK 模式伤害了我的眼睛这一事实 :)

【讨论】:

  • 大写锁定是故意的 - 用于在视觉上区分您正在使用的内部 DSL;另外,SQL 通常用大写规范指定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2022-08-19
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多