Сведения о вопросе

Fedya

08:59, 17th August, 2020

Теги

c#   .net   database   orm    

Простой объект для продукта базы данных

Просмотров: 425   Ответов: 5

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

Например: Отображение отношений объектов из Dev Express

В сущности, стоит ли оно того? Смогу ли я сэкономить "THAT" много времени, усилий и будущих ошибок?



  Сведения об ответе

DO__IT

18:37, 24th August, 2020

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


  Сведения об ответе

$DOLLAR

03:37, 8th August, 2020

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

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

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


  Сведения об ответе

appple

04:48, 7th August, 2020

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


  Сведения об ответе

lesha

11:49, 4th August, 2020

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

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


  Сведения об ответе

SEEYOU

07:13, 10th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться