Оператор switch обычно составляется с помощью таблиц переходов , а не с помощью простых сравнений.
Таким образом, нет никаких потерь в производительности, если вы переставляете описания случаев.
Тем не менее, иногда полезно хранить большее количество дел в последовательном порядке и не использовать разрыв / возврат в некоторых записях, чтобы поток выполнения мог перейти к следующему случаю и избежать дублирования кода.
Когда различия чисел между делом number
велики от одного случая к другому, например, в case 10:
и case 200000:
компилятор, безусловно, не будет генерировать таблицы переходов, поскольку он должен заполнить около 200К записей почти все с указатель на случай default:
, и в этом случае он будет использовать сравнения.
Я добился большого успеха, используя Fluent NHibernate и внедрение зависимостей (Ninject, в моем случае) с MVC.
Мне кажется, что любая зрелая ORM должна хорошо работать с MVC. Поскольку природа MVC (Модель / Представление / Контроллер) разделяет эти три задачи, любой ORM должен хорошо вписываться в роль «Модель».
LINQ to SQL предназначен для SQL Server. Entity Framework поддерживает и некоторые другие базы данных.
NHibernate - хороший выбор. Вы можете использовать Castle ActiveRecord (он построен поверх NH), если вы делаете приложение на основе данных, или Sharp Architecture для руководства проектом.
Entity Framework integrates nicely with MVC and supports other databases.
Короткий (и не очень полезный) ответ заключается в том, что оба упомянутых ORM будут работать с MVC. Более длинный ответ заключается в том, что вам следует подумать о том, как вы хотите работать с объектами модели. Например, вы хотите сначала разработать объект предметной области (например, подход к проектированию, основанному на домене), или вы реализуете приложение типа «формы поверх данных», в котором вы, возможно, захотите сгенерировать уровень доступа к данным из существующей базы данных? Как вы предпочитаете указывать сопоставления? Вы хотите использовать свободный интерфейс или вас устраивает отображение файлов (или атрибутов в объектах вашего домена)?
Это те вопросы, которые вам нужно исследовать при выборе ORM - и они в основном не зависят от используете ли вы MVC или Winforms.
Как человек, только что перешедший с LINQ to SQL на (Свободный) NHibernate, я заметил несколько вещей.
LINQ to SQL принял так долго, чтобы выяснить, как сделать эквивалент подкласса соединения. После многих доработок где-то читал, что это невозможно. Он может отображать наследование только в том случае, если ВСЕ столбцы находятся в той же таблице. Это замечательно, если есть несколько столбцов, но в моем случае их много, а подклассы являются родителями других подклассов и так далее. Почему я должен класть их все в одну таблицу ради моей ORM?
NHibernate по опыту оказался надежным (иногда слишком много для небольших быстрых проектов), и хотя знаком с ним по небольшим проектам, Я почувствовал, что это может быть слишком много, и пошел по пути LINQ to SQL, поскольку я мог сгенерировать файл DBML и начать работу в течение нескольких минут.
Свободное владение NHibernate. Вмещает лучшее из обоих миров (в моем случае). Я могу составить карту так, как я хочу, и иметь свою базу данных так, как я хочу, и мне не придется идти на компромисс в моей области или моделях данных. Еще одно слово: автоматическое отображение ... вишенка на торте.
Мне пришлось бы пойти с другим ORM, как только я обнаружил ограничения и столкнулся с несколькими препятствиями с LINQ to SQL, но Fluent NHibernate упростил этот выбор, и я не думайте, что я оставлю это, если не появится что-то, что сделает работу еще лучше.
Итак, как сказал Роб Скотт, вопрос в том, как вы абстрагируете свою область => модель данных? И вы начинаете с домена или базы данных? Насколько сложны отношения? Если у вас вообще есть наследство, я бы сказал, просто используйте более богатый фреймворк ORM и избавьте себя от горя.
В Fluent NHibernate есть одна из лучших документов, которые я когда-либо находил, и так много поддержки, заметок, блогов и ресурсы это ненависть к самому себе делать что-то меньшее ... ИМО! Я приступил к работе менее чем за 24 часа.
О, и если вы новичок в NHibernate, возьмите книгу NHibernate in Action, чтобы смазать колеса, хотя для этой структуры тоже есть много помощи.
Лучшим признаком того, что инструмент не работает, является то, что вы должны РАБОТАТЬ с инструментом ... LINQ to SQL, который я настраивал, читал официальные документы, всякое безумие, и он отказывался генерировать соответствующие запросы, когда у меня возникло искушение изменить свою таблицу и домен, я сказал, позвольте мне попробовать Fluent, и я счастлив, что это сделал.
Удачи вам .. Извините за длинный ответ; все это произошло за последние пять дней или около того, так что я думаю, я все еще догнал: -)