Встроенная база данных для.net, которая может работать в сети
Я искал (и все еще ищу) встроенную базу данных для использования в приложении.net (C#). Предупреждение: Приложение (или, по крайней мере, база данных) хранится на сетевом диске, но используется только 1 пользователем одновременно.
Теперь моей первой идеей была редакция SQL Server Compact. Это действительно красиво интегрировано, но не может работать в сети.
Firebird, похоже, имеет ту же проблему, но.NET Integration, по-видимому, не является первоклассной и в значительной степени недокументированной.
Blackfish SQL выглядит интересно, но нет версии.net версии. Цены тоже в порядке.
Любые другие предложения о том, что хорошо работает с.net и работает в сети без необходимости фактической установки серверного программного обеспечения?
10 ответов
Когда я читал ваш вопрос, мне пришло в голову SQLite, и я вполне уверен, что к нему можно получить доступ с сетевого диска, если вы соблюдаете ограничение на 1 пользователя за раз.
Я бы порекомендовал Advantage Database Server (www.advantagedatabase.com). Это зрелая встроенная БД с отличной поддержкой и доступная из многих языков разработки в дополнение к.NET. "Локальная" версия является бесплатной, работает в вашем приложении в форме DLL, не требует установки на сервере / в сетевой папке и поддерживает все основные функции БД. Вы можете хранить файлы БД и / или приложений в сети; это не волнует, где данные.
Отказ от ответственности: я инженер в группе ADS R&D. Обещаю, это круто:)
Вы можете использовать Firebird Embeded, это просто DLL, что вам нужно будет поставлять с вашим приложением.
Что касается недокументированных вещей, то это не совсем так, драйвер Firebird .NET реализует интерфейсы ADO, поэтому, если вы знаете ADO, вы можете работать с Firebird, в основном вместо SQLConnection вы будете использовать FBConnection и т. Д., Но я советую написать слой доступа к данным и использовать только интерфейсы в вашем коде, что-то вроде этого:
using FirebirdSql.Data.FirebirdClient;
public static IDbConnection MyConnection()
{
FbConnection cn = new FbConnection("...");
return cn;
}
Этот пример очень прост, но вам не нужно намного больше, чем это.
Мы используем Firebird для всех наших приложений без каких-либо проблем, вы должны по крайней мере попробовать его.
Похоже, ADO/Access идеально подходит для ваших нужд. Он запекается в стек MS, хорошо подготовлен и многопользовательский.
Вы можете программно создать БД следующим образом:
Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")
Затем вы можете использовать стандартные методы ADO.NET для взаимодействия с базой данных.
Проверьте VistaDB. У них очень хороший продукт, серверная версия (3.4) находится в бета-версии и очень близка к выпуску.
Немного опоздал к сообщению здесь... И VistaDB уже упоминалось, но я хотел отметить, что VistaDB управляется на 100% (так как ваш пост был помечен как.net). Он может работать с общего сетевого диска, и его развертывание составляет 1 МБ xcopy.
Поскольку вы упоминаете SQL CE, мы также поддерживаем синтаксис и типы данных T-SQL (фактически, больше, чем SQL CE) и имеем обновляемые представления, TSQL Procs и другие вещи, отсутствующие в SQL CE.
Почему бы не использовать SQL Server 2005 Express edition?
Это действительно зависит от того, что вы подразумеваете под "встроенным" - но вы можете распространять SQLServer2005E вместе со своими приложениями, и пользователь никогда не узнает, что он там есть.
Встраивание SQL Server Express в приложения
Встраивание SQL Server Express в пользовательские приложения
Я озадачен
Вы просите встроенную базу данных - где база данных хранится на сервере. это означает сохранение файла данных в сетевой папке. Затем вы говорите, что SQL Compact Edition не будет работать... за исключением того, что если взглянуть на этот документ:
Документ Word:
Выбор между SQL Server 2005 Compact Edition и SQL Server 2005 Express Edition
На странице 8 у вас есть красивый большой зеленый флажок рядом с "Хранение файлов данных в сетевой папке".
Поэтому мне кажется, что ваша первая мысль была правильной.
Там также Валентина. Я знакомился с этим продуктом, когда работал над проектом Real Basic. Версия RB очень хорошая.
Вы рассматривали OODB? Из различных альтернатив с открытым исходным кодом я рекомендую db4o (извините за саморекламу:)), которая может работать как встраиваемой, так и в режиме клиент / сервер.
Лучший
Адриано
Этот вопрос теперь древний, и многое изменилось. Для моих конкретных целей я предпочитаю LiteDB. Это открытый исходный код и репозиторий GitHub.
Кроме того, SQLite является отраслевым стандартом для встроенных баз данных. Есть попытки перенести код в.NET, но в основном случае используется собственная библиотека (например, пакет Nuget sqlite) и / или оболочка.NET P/Invoke, такая как Microsoft.Data.SQLite.