Я искал (и продолжаю искать) встроенную базу данных для использования в приложении .net (c #). Предупреждение: Приложение (или, по крайней мере, база данных) хранится на сетевом диске, но используется только 1 пользователем одновременно.
Теперь моей первой идеей была редакция SQL Server Compact . Это действительно красиво интегрировано, но не может работать в сети.
У Firebird, похоже, та же проблема, но .NET Integration, по-видимому, не является первоклассной и в значительной степени недокументированной.
Blackfish SQL выглядит интересно, но нет версии .net версии. Цены тоже в порядке.
Любые другие предложения о том, что хорошо работает с .net и работает в сети без необходимости фактической установки серверного программного обеспечения?
Когда я читал ваш вопрос, мне пришло в голову SQLite , и я вполне уверен, что к нему можно получить доступ с сетевого диска, если вы соблюдаете ограничение на 1 пользователя за раз.
Я бы порекомендовал Advantage Database Server (www.advantagedatabase.com). Это зрелая встроенная БД с отличной поддержкой и доступная из многих языков разработки в дополнение к .NET. «Локальная» версия является бесплатной, запускается в вашем приложении в форме DLL, не требует установки на сервер / сетевой ресурс и поддерживает все основные функции БД. Вы можете хранить файлы БД и / или приложений в сети; это не волнует, где данные.
Отказ от ответственности: я инженер в группе ADS R & D. Обещаю, это круто :)
Похоже, 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 для взаимодействия с базой данных.
Вы можете использовать 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 для всех наших приложений без каких-либо проблем, вы должны по крайней мере попробовать его.
Проверьте 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 (извините за саморекламу :)), который может работать как встраиваемом, так и в режиме клиент / сервер.
Лучший
Адриано