Различия между NHibernate, Замком, Linq - Кто к ним стремятся?

Вот что мы придумали для копирования одного поля в другое для ~ 150_000 записей. Это заняло около 6 минут, но все еще значительно менее ресурсоемким, чем это было бы для создания экземпляра и повторения одного и того же количества объектов ruby.

js_query = %({
  $or : [
    {
      'settings.mobile_notifications' : { $exists : false },
      'settings.mobile_admin_notifications' : { $exists : false }
    }
  ]
})

js_for_each = %(function(user) {
  if (!user.settings.hasOwnProperty('mobile_notifications')) {
    user.settings.mobile_notifications = user.settings.email_notifications;
  }
  if (!user.settings.hasOwnProperty('mobile_admin_notifications')) {
    user.settings.mobile_admin_notifications = user.settings.email_admin_notifications;
  }
  db.users.save(user);
})

js = "db.users.find(#{js_query}).forEach(#{js_for_each});"
Mongoid::Sessions.default.command('$eval' => js)
9
задан Community 23 May 2017 в 11:48
поделиться

4 ответа

Когда Вы говорите, что Замок, я принимаю Вас, означает замок Active Record?

Различием является NHibernate, OR/M и нацелен на разработчиков, которые хотят сфокусироваться на домене, а не базе данных. С linq к sql существует ранее Ваша база данных, и Вы - отношения, и часть программирования будет управляться тем, как Ваша база данных определяется.

Теперь между NHibernate и замком ActiveRecord - они подобны в этом, Вы управляете своим проектированием приложений от домена, но с NHibernate Вы предоставляете отображающиеся XML-файлы (или отображающиеся классы с быстрым NHibernate), где в Активной Записи Вы используете конвенцию по конфигурации (использующий атрибуты для определения любые столбцы и настройки, которые не соответствуют естественно). Запись замка Active все еще использует NHibernate в фоновом режиме.

Один OR/M является не обязательно 'одним истинным путем' для движения. Это зависит от Вашей среды, приложение Ваша разработка и Ваша команда.

Можно также хотеть проверить SubSonic. Это является большим для активной записи, но это не для проекта, где Вы хотите сфокусироваться главным образом на своем Домене. В зависимости от проекта я обычно использую любого NHibernate (с замком Active Record) или Дозвуковой

17
ответ дан 4 December 2019 в 10:34
поделиться

LINQ является просто рядом новых функций C#: дополнительные методы, лямбда-выражения, возражают инициализаторам, анонимным типам, и т.д.

"LINQ к SQL", с другой стороны, является чем-то, что можно сравнить другие обертки SQL.

1
ответ дан 4 December 2019 в 10:34
поделиться

NHibernate и Linq К Sql являются Объектными/Реляционными Картопостроителями, разработанными для упрощения контакта с несоответствием импеданса, найденным между объектами и RDBMS. Если Вы, где хотят достигнуть тестируемого, персистентного неосведомленного приложения, NHibernate, являетесь способом пойти. Я всегда рекомендовал бы NHibernate по Linq К Sql. Оба инструмента нацелены на удаление контакта с доступом к данным. Сколько раз необходимо действительно написать код доступа к данным?

Замок является средой разработки приложения и Инверсией контейнера Управления и не обеспечивает доступ к данным. Это предоставляет средства для использования NHibernate, делающего для меньшего количества трения, и это также предоставляет implemenation шаблона Записи Actuve с помощью NHibernate.

1
ответ дан 4 December 2019 в 10:34
поделиться

На самом деле мы используем Linq и NHibernate вместе (с Fluent). Если у вас есть немного терпения в процессе обучения, вы быстро влюбитесь.

1
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: