2010-03-25 3 views
4

В настоящее время у нас есть приложение, которое во многом зависит от хранимых процедур. Существует интенсивное использование временных таблиц. Это очень большое приложение.Приложение, которое сильно зависит от хранимых процедур

В этой ситуации я хотел бы использовать Entity Framework или Linq2Sql для перезаписи. Я мог бы рассмотреть использование Fluent Hibernate или Subsonic, поскольку я использовал их довольно широко в прошлом.

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

Учитывая два варианта, которые я хочу сделать, какой из двух является лучшим маршрутом и почему? Если мой выбор крайне идиотский, пожалуйста, предоставьте альтернативы.

Редактировать: Причина вопроса и изменения в том, что уровень доступа к данным несуществующий и был построен 10 лет назад. В настоящее время мы все еще сталкиваемся с множеством проблем. Я не хочу слишком много разглашать, но если вы это увидели, ваши глаза начнут кровоточить :)

+2

Позволь мне быть первым, чтобы спросить обязательно «почему?». Нет ничего плохого в сохраненных файлах procs и temp при правильном использовании. Переключение архитектуры доступа к данным приведет к появлению нового набора ошибок и может привести к снижению производительности. –

ответ

4

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

Если вы выделите доступ к данным через интерфейсы, вы сможете использовать любую доступную вам доступ к данным. Я просто не уверен на 100%, как это относится к таким вещам, как Enity Framework.

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

В качестве первого шага - вместо того, чтобы переписывать, я бы хотел сделать это - просто возьмите слой данных на месте и отвлеките его, чтобы вы могли работать с ним.

Параллельно вы можете сделать некоторые доказательства работы над концепциями, такими как Enity Framework, чтобы, когда вы готовы реорганизовать новый DAL, у вас есть надежная информация, чтобы основывать ваше решение.

Просто помните, что «исполнение качество» должно быть сбалансировано с «эволюционным» теми :)

+0

+1 Согласен. Определение уровня абстракции является ключевым. Благодаря этому он мог бы легко создавать хранимые реализации proc и медленно преобразовывать их с течением времени в любое удобное для него время. –

+0

Это, безусловно, ответ, который я искал, благодаря Адриану. Причина, по которой я предпочитаю этот ответ, заключается в том, что я считаю, что абстракция является ключевой и что по мере развития программного обеспечения наше программное обеспечение также должно быть в состоянии. Спасибо! –

0

О вас подумали: LLBLGen Pro? Это коммерческое решение, но оно довольно дешево, и я считаю, что это намного лучше, чем эти две альтернативы. Я думаю, что Frans Bouma на самом деле является пользователем SO, но их форумы также очень полезны.

+0

Я не работал с LLBLGen, я знаю об этом, поскольку Франс Бума - очень активный твиттер и C# MVP :) Каковы преимущества LLBLGen Pro над альтернативами? –

+0

Поддержка имени только одного ... Попробуйте получить ответ от MS по любым вопросам, которые могут возникнуть с Linq2Sql или EF. – Matt

Смежные вопросы