Легкие альтернативы NHibernate - PullRequest
       29

Легкие альтернативы NHibernate

17 голосов
/ 18 сентября 2008

NHibernate не совсем подходит для нашей среды из-за всех зависимостей. (Замок, лог4нет и пр.)

Есть ли хорошая легкая альтернатива?

Необходима поддержка простых файловых баз данных, таких как Access / SQLite / VistaDB.

В идеале, что-то содержится в одной сборке, которая ссылается только на сборки .NET. Если это требует только .NET Framework 2.0 или 3.0, это бонус.

Ответы [ 8 ]

18 голосов
/ 18 марта 2011

Массивные - https://github.com/robconery/massive

или

PetaPoco - https://github.com/toptensoftware/petapoco

Оба являются одним файлом .cs без каких-либо зависимостей, кроме того, что находится в GAC.

(полное раскрытие, PetaPoco - это то, что я написал)

8 голосов
/ 18 сентября 2008

Для облегченного ORM, который работает хорошо и требует только одной сборки, почему бы не попробовать Lightspeed от Mindscape. Это не с открытым исходным кодом, однако источник доступен и по разумной цене - риск с большинством ORM, которые не очень хорошо приняты, конечно же, качество и уровень поддержки, и есть очень мало других ORM с открытым исходным кодом, которые стоит беспокоиться в. Чистое пространство на данный момент.

Из-за вашей неприязни к зависимостям NHibernate это звучит так, как будто у вас нет необходимости для каркаса логирования или каких-либо аспектов проекта замка, таких как IoC, Monorail и т. Д. Обдумывали ли вы, возможно, просто минимальный уровень требований NHibernate ( я полагаю, что log4net и коллекции Iesi, а также динамический прокси-сервер из проекта замка?) и запуск ILMerge над ними, чтобы объединить их в единую сборку - может занять немного времени, но это не слишком сложно - или, в качестве альтернативы, вы можете просто потянуть исходный код для каждого из этих проектов в пользовательскую сборку NHibernate, которую вы поддерживаете для своей организации, которая обрезает функции, которые не требуются вашему проекту / организации - это не так сложно / неудобно, как кажется, и я кое-что сделал для этих целей один проект, в котором мы хотели получить выгоду от ORM, но нам нужно было уменьшить размер распределенных файлов / установщика.

Кроме того - возможно, вы можете объяснить, что, по вашему мнению, слишком "тяжело" в решении на основе Nhibernate ... по моему опыту, это достаточно легкая платформа ORM по сравнению с некоторыми.

7 голосов
/ 17 августа 2011

Добавляя к этому списку, вы также можете взглянуть на Dapper (написано и используется самим StackOverflow).

2 голосов
/ 18 сентября 2008

некоторые из альтернатив:
- ActiveRecord - он использует nhibernate.dll в фоновом режиме, но настройка выполняется через атрибуты. Это как облегченная версия nhibernate
- Дозвуковой
- CoolStorage.NET - Я часто использовал его в небольших проектах. Хорошо работает с количеством дбс

2 голосов
/ 18 сентября 2008

Вообще говоря, для работы вашей базы данных с .net вам необходим поставщик ADO.Net.

Для MS Access (Jet) Поставщик поставляется с .net. Для SQLite существует отдельный поставщик ADO.Net.

Что касается lib уровня доступа к данным, если вы хотите абстрагироваться от ADO.Net:

Все это хорошо работает, начиная с framework 2.0 и выше.

В основном, вы выбираете (и вариантов много)

1 голос
/ 15 апреля 2009

Вот большой список альтернатив, которые я бы порекомендовал:

  • * 1006 камеры Установки *
  • SOODA
  • ODX
  • Lightspeed (бесплатно для 8 объектов или меньше)

Эти 4 самые легкие. Subsonic, ActiveRecord и другие предназначены для больших систем. Они отлично работают на небольших системах, но (по крайней мере, для ActiveRecord) поставляются с огромным списком зависимостей и избыточностью для небольшой системы. Я бы пошел с Lightspeed и сказал бы, что под 8 объектами - это небольшая система, и простое использование NHibernate, потому что оно широко применяется, хорошо для масштабирования, но в краткосрочной перспективе не имеет смысла - и наличие слоя между ORM и вашими потребителями может работать вокруг этого в любом случае.

0 голосов
/ 07 мая 2014

Если вам не нужен полнофункциональный ORM и вам нужен быстрый независимый от базы данных слой поверх ADO.NET, попробуйте с открытым исходным кодом Библиотека NI.Data (V2) . Он очень легкий (всего одна небольшая сборка, без других зависимостей), обеспечивает всю стандартную инфраструктуру уровня данных:

  • запросить абстракцию и синтаксический анализатор для его строкового представления под названием 'relex' (похоже: "books (rating = 5) [title, id]") - очень хорошая альтернатива Linq-to-SQL, и выражения могут быть составлены на летать)
  • концепция 'представления' для инкапсуляции сложных запросов SQL, зависящих от синтаксиса DB
  • триггеры данных
  • разрешения уровня данных для запросов выбора / обновления / удаления
  • из коробки поддерживает поставщиков MS SQL, SQLite, MySQL, Odbc / OleDb (MS Access). Можно легко добавить поддержку других баз данных SQL.

Его основной компонент (DALC) инициализируется только одной строкой кода:

var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);

вот и все. Если вам нужна поддержка среды выполнения .NET 2.0, вы можете попробовать скомпилировать либо последнюю версию V2 в среде выполнения 2.0, либо использовать предыдущую унаследованную версию (NI.Data.Dalc, V1).

0 голосов
/ 18 сентября 2008

LINQ to SQL может быть хорошей альтернативой "сложным" системам ORM, если вы будете использовать их правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...