Генерация кода против Sprocs? - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь разобраться в выборе инструментов генерации кода / инструментов ORM и выяснить, какое решение лучше всего соответствует моим требованиям и имеющимся ограничениям.

Я создаю основополагающее решение для новых проектов. Он состоит из ASP.NET MVC 3.0, уровней для бизнес-логики и доступа к данным. Уровень доступа к данным на данный момент должен пойти против Oracle, а затем переключиться на SQL в этом году, когда миграция БД завершена.

С точки зрения сопоставления DTO и пользовательских типов в решении, какой инструмент генерации ORM / кода будет работать с созданием необходимого мне кода, но может ТОЛЬКО получать доступ к сохраненным Procs в Oracle и SQL .?

Это означает, что мне нужно сгенерировать пользовательские объекты, которые являются артефактами и переданы в хранимые процедуры в качестве параметров, мне не нужно генерировать сами спроки, они уже существуют. Я ищу представление о том, что нужно sproc и возвращает обратно в DTO. В некоторых случаях я могу пойти против взглядов и генерировать DTO. Я предполагаю, что большинство инструментов уже делают это. Но в 90% случаев у меня нет доступа напрямую ни к каким таблицам или представлениям, только к сохраненным процессам.

Имеет ли это смысл?

1 Ответ

0 голосов
/ 16 декабря 2011

ORM лучше всего подходят для отображения объектов в таблицы (и / или представления), а не для отображения объектов в sprocs.

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

Я бы сказал, что если вы застряли в sprocs, ваши варианты использования стороннего кода помогут сократить ваши затраты.время разработки и сопровождения строго ограничено.

Я считаю, что LinqToSql или EntityFramework (или оба?) способны к некоторому волшебству в отношении SQL Server, чтобы попытаться в основном автоматически выяснить, что может возвращать sproc.Я не думаю, что это работает постоянно, это просто сложная догадка, и я серьезно сомневаюсь, что это будет работать с Oracle.Мне ничего не известно о программном обеспечении, которое даже пытается выяснить, что может вернуть спрок.

Спрок может вернуть несколько различных наборов записей, которые могут динамически создаваться спроком в зависимости от входных данных и данных.в базе данных.Техническое решение для автоматического прогнозирования выходных данных sproc, похоже, потребовало бы следующего:

  1. Статический набор базовых данных в базе данных
  2. Возможность передавать все возможные входные данные в sprocи выполнить sproc без какого-либо отрицательного воздействия или побочных эффектов

Это даст вам статический набор возможных выходных данных для любого заданного действительного ввода.Небольшое изменение данных в базе данных может сделать все недействительным.

Если я правильно помню, волшебство, которое сделала Microsoft, было похоже на вызов sproc, передающий NULL для всех входных параметров, и предполагая, что выходные данные всегда являются первым набором записей.это возвращается из базы данных.Это явно неполное решение проблемы, но в простых случаях оно кажется волшебным, потому что иногда оно может очень хорошо работать.

...