Синтаксический анализ проверки SQL - PullRequest
1 голос
/ 13 декабря 2010

Я читаю ограничения столбцов из базы данных.
например:

(substring([name],(1),(1))='P' OR len([name])>(2) AND len([name])>(4) AMD (len(name)>5 OR len(name)<4))

Идея состоит в том, что каждая открытая скобка должна быть закрыта.
Скобки вокруг чисел и функций автоматически вставляются студией управления SQL при добавлении новых проверочных ограничений. Кто-нибудь может подсказать, как разобрать эти строки?

Моя цель - преобразовать ограничения проверки столбцов в код C #, чтобы я мог создавать средства проверки сущностей. Все таблицы базы данных отображаются в классы сущностей.

1 Ответ

2 голосов
/ 13 декабря 2010

Простой ответ: это не будет легко. По крайней мере, если вы пытаетесь сделать это правильно ...

Вы говорите об определении DSL для определения ограничений (который «по совпадению» точно такой же, как TSQL). ИМХО, для этого вам нужно использовать какой-то инструмент парсера. Может быть, вы должны рассмотреть возможность использования Ирония .

Хотя это интересная идея. Я вижу преимущества этого - я просто не думаю, что это будет проще, чем просто использовать БД в качестве хранилища данных (без какой-либо проверки данных - может быть, только ограничения внешних ключей) и сосредоточиться на определении всех бизнес-правил в Серверная часть .NET ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...