EBNF для свободного интерфейса - PullRequest
3 голосов
/ 29 октября 2008

У меня недавно была потребность написать свободный интерфейс для C #, который будет по существу отражать SQL. Да, я знаю о LINQ to SQL, но мне интересно быть «ближе к металлу» - имея что-то, что, по сути, обеспечивает не что иное, как IntelliSensified SQL shim в C #.

например.,

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

Теперь я подумал, что эту концепцию можно обобщить, то есть как насчет общего интерфейса EBNF для свободного интерфейса? Кто-нибудь знает, существует ли такой зверь?

1 Ответ

3 голосов
/ 29 октября 2008

Мне это нравится, но вы должны убедиться, что вы возвращаете типы, такие как HasFromAndSelect или что-то в этом роде, чтобы не получить fq.SELECT(Foo.ID).SELECT(Foo.Age).WHERE(Foo.Age > 22) или fq.WHERE(Foo.Age > 22).SELECT(Foo.ID) и т. Д.

Нам нужно больше размышлений, в том числе тот факт, что РЕЖИМ БЛОКИРОВКИ КАПСЛА причиняет мне боль:)

...