Какая платформа данных лучше для сайта MVC ASP.NET - LINQ к SQL или NHibernate

Оператор switch обычно составляется с помощью таблиц переходов , а не с помощью простых сравнений.

Таким образом, нет никаких потерь в производительности, если вы переставляете описания случаев.

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

Когда различия чисел между делом number велики от одного случая к другому, например, в case 10: и case 200000: компилятор, безусловно, не будет генерировать таблицы переходов, поскольку он должен заполнить около 200К записей почти все с указатель на случай default:, и в этом случае он будет использовать сравнения.

10
задан tereško 18 July 2012 в 20:21
поделиться

5 ответов

Я добился большого успеха, используя Fluent NHibernate и внедрение зависимостей (Ninject, в моем случае) с MVC.

Мне кажется, что любая зрелая ORM должна хорошо работать с MVC. Поскольку природа MVC (Модель / Представление / Контроллер) разделяет эти три задачи, любой ORM должен хорошо вписываться в роль «Модель».

4
ответ дан 3 December 2019 в 23:14
поделиться

LINQ to SQL предназначен для SQL Server. Entity Framework поддерживает и некоторые другие базы данных.

NHibernate - хороший выбор. Вы можете использовать Castle ActiveRecord (он построен поверх NH), если вы делаете приложение на основе данных, или Sharp Architecture для руководства проектом.

2
ответ дан 3 December 2019 в 23:14
поделиться

Entity Framework integrates nicely with MVC and supports other databases.

1
ответ дан 3 December 2019 в 23:14
поделиться

Короткий (и не очень полезный) ответ заключается в том, что оба упомянутых ORM будут работать с MVC. Более длинный ответ заключается в том, что вам следует подумать о том, как вы хотите работать с объектами модели. Например, вы хотите сначала разработать объект предметной области (например, подход к проектированию, основанному на домене), или вы реализуете приложение типа «формы поверх данных», в котором вы, возможно, захотите сгенерировать уровень доступа к данным из существующей базы данных? Как вы предпочитаете указывать сопоставления? Вы хотите использовать свободный интерфейс или вас устраивает отображение файлов (или атрибутов в объектах вашего домена)?

Это те вопросы, которые вам нужно исследовать при выборе ORM - и они в основном не зависят от используете ли вы MVC или Winforms.

1
ответ дан 3 December 2019 в 23:14
поделиться

Как человек, только что перешедший с LINQ to SQL на (Свободный) NHibernate, я заметил несколько вещей.

  1. LINQ to SQL принял так долго, чтобы выяснить, как сделать эквивалент подкласса соединения. После многих доработок где-то читал, что это невозможно. Он может отображать наследование только в том случае, если ВСЕ столбцы находятся в той же таблице. Это замечательно, если есть несколько столбцов, но в моем случае их много, а подклассы являются родителями других подклассов и так далее. Почему я должен класть их все в одну таблицу ради моей ORM?

  2. NHibernate по опыту оказался надежным (иногда слишком много для небольших быстрых проектов), и хотя знаком с ним по небольшим проектам, Я почувствовал, что это может быть слишком много, и пошел по пути LINQ to SQL, поскольку я мог сгенерировать файл DBML и начать работу в течение нескольких минут.

  3. Свободное владение NHibernate. Вмещает лучшее из обоих миров (в моем случае). Я могу составить карту так, как я хочу, и иметь свою базу данных так, как я хочу, и мне не придется идти на компромисс в моей области или моделях данных. Еще одно слово: автоматическое отображение ... вишенка на торте.

Мне пришлось бы пойти с другим ORM, как только я обнаружил ограничения и столкнулся с несколькими препятствиями с LINQ to SQL, но Fluent NHibernate упростил этот выбор, и я не думайте, что я оставлю это, если не появится что-то, что сделает работу еще лучше.

Итак, как сказал Роб Скотт, вопрос в том, как вы абстрагируете свою область => модель данных? И вы начинаете с домена или базы данных? Насколько сложны отношения? Если у вас вообще есть наследство, я бы сказал, просто используйте более богатый фреймворк ORM и избавьте себя от горя.

В Fluent NHibernate есть одна из лучших документов, которые я когда-либо находил, и так много поддержки, заметок, блогов и ресурсы это ненависть к самому себе делать что-то меньшее ... ИМО! Я приступил к работе менее чем за 24 часа.

О, и если вы новичок в NHibernate, возьмите книгу NHibernate in Action, чтобы смазать колеса, хотя для этой структуры тоже есть много помощи.

Лучшим признаком того, что инструмент не работает, является то, что вы должны РАБОТАТЬ с инструментом ... LINQ to SQL, который я настраивал, читал официальные документы, всякое безумие, и он отказывался генерировать соответствующие запросы, когда у меня возникло искушение изменить свою таблицу и домен, я сказал, позвольте мне попробовать Fluent, и я счастлив, что это сделал.

Удачи вам .. Извините за длинный ответ; все это произошло за последние пять дней или около того, так что я думаю, я все еще догнал: -)

6
ответ дан 3 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

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