2008-09-18 2 views
17

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

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

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

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

ответ

2

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

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

Что касается уровня Lib доступа к данным, если вы хотите какой-то абстракцию ADO.Net:

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

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

8

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

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

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

2

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

0

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

+3

LINQ to SQL поддерживает только SQL Server - плакат заявил, что поддержка файловых баз данных имеет решающее значение. –

+0

LINQ to SQL поддерживает файловую базу данных - Microsoft SQL Server Compact, доказательство: http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx – too

1

Вот big list альтернатив, которые я бы рекомендовал:

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

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

+0

Эта ссылка истекла, новое местоположение http://shrinkrays.net/articles/a-look-at-net-object-relational-mapper-orms.aspx –

+0

Обновлен url –

18

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

или

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

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

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

+4

Simple.Data может быть стоит посмотреть тоже. – asgerhallas

+1

любой ORM может быть превращен в один файл .cs – nawfal

7

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

+0

Очень красивая библиотека - простота - потерянная форма искусства! –

0

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

  • абстракцию запроса и анализатор для его строкового представления под названием «РЕЛЭКС» (это выглядит следующим образом: «книги (рейтинг = 5) [название, идентификатор]»- очень хорошая альтернатива Linq к SQL и выражения могут быть составлены на лету)
  • понятие„вид“для инкапсуляции комплекса DB-синтаксической зависимую SQL запросов
  • данные триггеров
  • разрешений на уровне данных для запросов выбора/обновления/удаления
  • с сайта b ox поддерживает 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).

Смежные вопросы