2010-08-27 10 views
6

У меня есть объектная модель, которую я хочу сохранить, используя встроенную базу данных. Я до сих пор смотрел на db4o, NHibernate на SQLCE (w/linq) и RavenDB. Это будет использоваться в настольном приложении C#.Ищете руководство по встроенной базе данных .NET (например, db4o, NHibernate или RavenDB)

Основные характеристики Я ищу рычаги являются: Linq или аналогичные для запросов (не SQL или HQL), встроенный двигатель данных, Pocos, росо первая модель, без установки (без реестра или аналогичный)

Может ли один предлагает один? Являются ли эти три лучших выбора? Есть ли другие варианты? Из трех, может ли кто-нибудь порекомендовать один над другим?

Благодаря

+0

Возможный дубликат [Встроенная база данных для .net] (http://stackoverflow.com/questions/684595/embedded-database-for-net) –

+0

также http://stackoverflow.com/questions/2842189/good- embedded-database-solution-like-sqlite-for-net и http://stackoverflow.com/questions/271319/lightweight-sql-database-which-doesnt-require-installation –

ответ

10

Ну, три предлагаемые базы данных очень различны по своей природе. SQLCE с Hibernate как СУБД с ORM, db4o в качестве базы данных объектов и RavenDB в качестве базы данных документов. У каждого из них свои сильные стороны.

SQL CE & NHibernate-Combo Хорошая:

  • Очень хорошая поддержка в инструментальной оснастки, знания и большое сообщество там
  • Легко upgrage к серверам MS SQL
  • Extrem хорошая отчетность поддержки
  • Сила SQL

Плохие:

  • Потребность отображение
  • отображение между ОО и реляционным миром не просто и может привести к проблемам со сложными моделями.

RavenDB

Хорошо:

  • Не нужно никакого отображения
  • Простота в использовании
  • Мощный индексирования
  • JSON & доступа HTTP

Плохая:

  • Если домен не подходит к подходу документ-ориентированный, он будет весьма болезненным
  • Он не поддерживает.NET Framework Client Profile (который имеет особое значение, поскольку вопрос в ФП является относительно встроенных баз данных)

db4o

Хорошая:

  • Не нужно никакого отображения
  • Простая в использовании
  • Модель хранения близка к объектной модели. Это также работает для очень сложных моделей.
  • -

Плохая:

  • поддержка Инструментальное слаба.

Afaik все три поддержки LINQ и POCO-первый подход. Однако, поскольку NHibernate & SQL CE по-прежнему нуждается в тоннах отображения его не как трения, как это могло бы быть.

Я думаю, что если ваш фокус находится на POCO в первую очередь, LINQ-поддержка, ebedded использования и проста в использовании, я бы попробовал RaveDB или db4o. Если вы сосредоточены на «безопасности», знаниях сообщества, поддержке инструментов и отчетности, я бы пошел с NHibernate и SQL CE.

+0

Спасибо. Учитывая, что мой домен не настолько велик, чтобы сделать усилия по созданию карты слишком большими, я считаю, что подход NHibernate может быть лучшим. В первую очередь из-за поддержки сообщества. RavenDB является слишком новым, чтобы иметь большую базу знаний. –

+0

В качестве встроенной * базы данных, NHibernate имеет серьезные проблемы. Я бы выбрал Linq-To-SQL или EntityFramework4 задолго до выбора NHibernate в этот момент. Обе эти технологии запекаются в рамках и не имеют внешних зависимостей. –

0

См this question. Для поддержки LINQ, проверьте DbLinq, или поскольку вы уже собираетесь использовать NHibernate, вы можете использовать собственный поставщик LINQ от NHibernate.

+0

Я видел эти другие сообщения. Проблема заключалась в том, что они сосредоточены на встроенных реляционных хранилищах данных, и я ищу что-то для хранения объектной модели. Они предоставляют опции для NHibernate. DbLinq предоставит мне провайдера linq для базового хранилища данных, но он не предоставит мне первую модель POCO, которую я ищу. Я действительно ценю предложение, и если я поеду с NHibernate, я могу рассмотреть эти варианты. Тем не менее, я все еще ищу предложения о том, что лучше всего будет работать в первой модели POCO. –

+1

@David B: см. Бесплатные сопоставления nhibernate: http://wiki.fluentnhibernate.org/Auto_mapping –

+0

Спасибо, это было то, что я рассматривал. Тем не менее, в последнее время я наблюдаю более позитивные новости о двух других и надеялся выяснить, был ли NHibernate все еще выбор дефакто. –

3

Firebird это потрясающий встроенную базу данных, которая уже давно поддерживает все современные функции базы данных предприятия:

  • ANSI SQL
  • ACID
  • Хранимые процедуры
  • Триггеры

Вы можете получить .NET provider (последнее обновление 24 мая в соответствии с сайтом) и он поддерживает Entity Framework и Linq.