Замена программного обеспечения ORM Mapping
У нас есть большое веб-приложение, которое использует несколько баз данных (все в настоящее время MS SQL Server 2008 R2). Этому приложению около 7 лет, и оно было построено на платформе EntitySpaces. В настоящее время он использует версию 2009 этого фреймворка, написанную с использованием.NET в C# и предназначенную для.NET 3.5
Теперь, когда ES больше нет, нам нужно изменить это на что-то другое, и у нас возникают проблемы с выбором того, что использовать.
Наша схема базы данных очень зрелая и отлично работает для нас. Приложение установлено более чем на 80 сайтах по всей Великобритании.
В идеале нам нужен подобный инструмент ORM, который мы могли бы просто указать на существующие схемы базы данных и сгенерировать наши классы уровня доступа к бизнесу и данным. Мы не возражаем против обновления к более высокой платформе.NET, если это необходимо.
Наше приложение использует оба объекта Entityspaces, а также вызывает некоторые хранимые процедуры для предоставления функций отчетности. Это то, что мы не можем изменить, поэтому очень важна возможность вызова параметризованных хранимых процедур.
Мой вопрос: кто-нибудь имел опыт в этом деле и может ли кто-нибудь порекомендовать какие-либо инструменты, которые можно попробовать?
Заранее спасибо Энди
3 ответа
Entity Framework будет очевидным выбором в качестве собственного ORM от Microsoft. Он определенно поддерживает отображение на хранимые процедуры и генерацию моделей из баз данных (иначе говоря, "Database First" на языке EF).
Вы упомянули, что вы используете несколько баз данных - это усложняет (в любом ORM) - в качестве совета, нет ничего плохого в создании нескольких моделей в EF, особенно если вы выстраиваете их в своих ограниченных контекстах.
Книги Джули Лерман, вероятно, являются лучшим источником для изучения EF: http://www.amazon.co.uk/s/ref=nb_sb_ss_c_0_12?url=search-alias%3Dstripbooks&field-keywords=julie+lerman&sprefix=julie+lerman%2Caps%2C211
Есть также много курсов, доступных на Pluralsight.
Я определенно рекомендую вам взглянуть на ServiceStack.OrmLite!
Он точно соответствует вашим потребностям, поскольку он отображает класс POCO 1:1 в таблицу RDBMS.
Он позволяет вам вызывать хранимые процедуры, поставляется с шаблонами T4, чтобы помочь вам с частью генерации кода, и это действительно просто и довольно быстро!
Я широко использую CodeSmith и могу порекомендовать его: http://www.codesmithtools.com/
Я использовал Codesmith в течение нескольких лет, создавая собственную реализацию с использованием фреймворка CSLA.NET, но в настоящее время я использую шаблоны T4 с Entity Framework, который работает очень хорошо. Я бы порекомендовал шаблоны EF и T4, если вы хотите использовать EF и Codesmith, если вы хотите создать свой собственный ORM на основе вашей собственной архитектуры или чего-то похожего на ES.