Автоматически создавать классы-оболочки C # вокруг хранимых процедур - PullRequest
7 голосов
/ 14 ноября 2008

Я унаследовал довольно большое приложение, которое действительно могло бы использовать некоторую очистку. Во всем приложении есть код доступа к данным. В коде, некоторые в классах бизнес-логики, некоторые встроенные в классических страницах asp.

То, что я хотел бы сделать, это реорганизовать этот код, удалив весь код доступа к данным в несколько классов DAL.

Весь доступ к данным осуществляется через хранимые процедуры (Microsoft SQL 2000). Их 300-400.

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

У меня нет опыта работы с продуктами ORM, и я не уверен, что то, что я ищу, это полноценный ORM или просто сторонняя утилита, которая поможет генерировать простые обертки для вызовов sp.

Ответы [ 6 ]

3 голосов
/ 14 ноября 2008

Если у вас есть доступ к .NET Framework 3.5 и Linq to SQL, вы можете сделать это очень легко, посмотрите это видео:

LINQ to SQL: использование хранимых процедур

Использование существующих хранимых процедур и функции легко с LINQ. Мы просто перетащите хранимые процедуры на O / R отображение поверхности и вызвать их из созданный объект контекста данных.

2 голосов
/ 14 ноября 2008

Я рекомендую вам овладеть Code Smith. Продукт включает в себя шаблон для ORM и полностью поддерживает генерацию классов из схем БД (и я думаю, что Procs). Затем вы можете Code Gen все объекты, которые вам нужны.

Другой вариант - использовать LINQ to SQL.

1 голос
/ 14 ноября 2008

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

Я не думаю, что вы должны рассмотреть какую-либо форму массовой автоматизации для этой задачи.

0 голосов
/ 19 марта 2010

Не точно, но, похоже, это именно то, что вы просили.

http://www.codeproject.com/KB/database/SPGenerator.aspx

0 голосов
/ 14 ноября 2008

Подобно предложению Роберта, мы написали нашу собственную версию Code Smith.

Наш «Генератор кода» состоит из двух частей: SQL & Classes.

SQL: Сгенерирует обновление, выберет и удалит сохраненные файлы.

C #: Сгенерирует классы и сохранит файл как .cs

Мы звоним: sp_MShelpcolumns ' tablename ', чтобы получить список полей и типов данных, а затем выполнить замену.

Это не идеальное решение, но оно очень эффективно для получения первых 80% выполненных работ

0 голосов
/ 14 ноября 2008

перетаскивание хранимых процедур на поверхность проектирования набора данных (в .net 2.0 и выше) генерирует функцию обтекания

но если вам нужно их много, вам лучше использовать или написать простой генератор кода

два варианта для этого:

  1. создайте код переноса самостоятельно как классы / методы C #
  2. сгенерируйте файл dataset.xsd, затем откройте его в visual studio и позвольте дизайнеру сгенерировать для вас классы / методы

последний может поддерживаться через поверхность проектирования набора данных, но может быть сложно получить правильную генерацию (в первый раз)

...