2008-08-26 4 views
0

Я рассматриваю некоторые различные продукты для .NET, которые предлагают ускорить время разработки, предоставляя возможность объектно-ориентированным объектам легко сопоставлять автоматически создаваемую базу данных. У меня никогда не было проблемы с записью уровня доступа к данным, но мне интересно, действительно ли этот тип продукта сэкономит время, которое он требует. Я также опасаюсь, что я откажусь от слишком большого контроля над базой данных и затрудняю отслеживать любые проблемы с уровнем данных. Являются ли эти типы продуктов лучше или хуже в уже жестком случае, когда структура базы данных и бизнес-объектов должна измениться?Простой объект для базы данных Продукт

Например: Object Relation Mapping from Dev Express

В сущности, это стоит? Смогу ли я сохранить «ЭТО» много времени, усилий и будущих ошибок?

ответ

3

Я использовал SubSonic и EntitySpaces. Как только вы их повесите, я верю, что они могут сэкономить ваше время, но по мере роста сложности вашего приложения и объема данных вы можете перерасти эти инструменты. Вы начинаете терять время, пытаясь понять, связано ли что-то вроде проблемы с производительностью с ORM или вашим кодом. Поэтому, чтобы ответить на ваш вопрос, я думаю, это зависит. Я, как правило, согласен с Эриком в том, что корпоративные приложения большого объема не являются хорошим местом для ORM общего назначения, но в стандартных приложениях типа CRUD меньшего размера, вы можете увидеть некоторое сэкономленное время.

0

Существует множество вариантов ORM. Linq to Sql, nHibernate. Для баз данных с чистыми объектами существует db4o.

Это зависит от приложения, но для корпоративного приложения большого объема я бы не пошел по этому маршруту. Вам нужно больше контролировать свои данные.

0

Я обсуждал это с другом в выходные дни, и кажется, что выгоды, которые вы делаете при простоте хранения, теряются, если вам нужно иметь возможность запрашивать базу данных за пределами приложения. Я понимаю, что эти базы данных работают, сохраняя ваши данные объекта ненормализованным образом. Это позволяет быстро извлекать целые наборы объектов, но если вам нужно выбрать данные с точки зрения, которая не соответствует вашей объектной модели, то odbms может затрудниться с получением конкретных данных, которые вы хотите.

1

Я нашел iBatis из группы Apache, чтобы стать отличным решением этой проблемы. В настоящее время моя команда использует iBatis для сопоставления всех наших вызовов с Java на наш сервер MySQL. Это была огромная выгода, так как легко управлять всеми нашими SQL-запросами и процедурами, потому что они все находятся в файлах XML, а не в нашем коде. Разделение SQL из вашего кода, независимо от того, какой язык, является большой помощью.

Кроме того, iBatis позволяет вам создавать собственные карты данных для сопоставления данных с объектами и из ваших объектов в базу данных. Мы хотели эту гибкость, в отличие от решения типа Hibernate, которое делает все для вас, но также (IMO) ограничивает вашу способность выполнять сложные запросы.

Существует также версия iBatis .NET.

1

Я недавно установил ActiveRecord из проекта Castle для приложения. Было довольно легко добраться. Создав новое приложение, я даже использовал MyGeneration для сценариев файлов классов для устаревшего приложения, которое ActiveRecord может использовать за довольно короткое время. Он использует NHibernate для взаимодействия с базой данных, но забирает все сопоставление xml, которое поставляется с NHibernate. Самое приятное, хотя, если необходимо, у вас уже есть NHibernate в вашем проекте, вы можете использовать его полную мощность, если у вас есть особые случаи. Я бы предложил взглянуть на него.