Встроенная база данных для .net, которая может работать в сети - PullRequest
33 голосов
/ 03 августа 2008

Я искал (и продолжаю искать) встроенную базу данных для использования в приложении .net (c #). Предупреждение: Приложение (или, по крайней мере, база данных) хранится на сетевом диске, но одновременно используется только одним пользователем.

Теперь моя первая идея была SQL Server Compact edition . Это действительно красиво интегрировано, но не может работать в сети.

Firebird , похоже, имеет ту же проблему, но .NET Integration, по-видимому, не является первоклассным и в основном не имеет документов.

Blackfish SQL выглядит интересно, но пробной версии .net нет. Цены тоже в порядке.

Любые другие предложения о том, что хорошо работает с .net и работает в сети без необходимости фактической установки серверного программного обеспечения?

Ответы [ 10 ]

24 голосов
/ 03 августа 2008

SQLite пришло мне в голову при чтении вашего вопроса, и я вполне уверен, что к нему можно получить доступ с сетевого диска , если , вы сохраните ограничение 1 пользователь за один раз.

SQLite в .NET - начать работу за 3 минуты

10 голосов
/ 21 октября 2008

Я бы порекомендовал Advantage Database Server (www.advantagedatabase.com). Это зрелая встроенная БД с отличной поддержкой и доступная из многих языков разработки в дополнение к .NET. «Локальная» версия бесплатна, работает в вашем приложении в форме DLL, не требует установки на сервере / в сетевой папке и поддерживает все основные функции БД. Вы можете хранить файлы БД и / или приложений в сети; это не волнует, где данные.

Отказ от ответственности: я инженер группы исследований и разработок ADS. Обещаю, это круто:)

9 голосов
/ 09 августа 2008

Вы можете использовать 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 для всех наших приложений без каких-либо проблем, вы должны по крайней мере попробовать его.

9 голосов
/ 03 августа 2008

Похоже, 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 для взаимодействия с базой данных.

7 голосов
/ 23 апреля 2009

Немного опоздал к сообщению здесь. И VistaDB уже упоминалось, но я хотел отметить, что VistaDB управляется на 100% (так как ваш пост был помечен как .net). Он может работать с общего сетевого диска, и его развертывание составляет 1 МБ xcopy.

Поскольку вы упоминаете SQL CE, мы также поддерживаем синтаксис и типы данных T-SQL (фактически больше, чем SQL CE) и имеем обновляемые представления, TSQL Procs и другие компоненты, отсутствующие в SQL CE.

7 голосов
/ 03 августа 2008

Выезд VistaDB . У них очень хороший продукт, серверная версия (3.4) находится в бета-версии и очень близка к выпуску.

5 голосов
/ 03 августа 2008

Почему бы не использовать SQL Server 2005 Express edition ?

Это действительно зависит от того, что вы подразумеваете под «встроенным» - но вы можете распространять SQLServer2005E вместе со своими приложениями, и пользователь никогда не узнает, что он там есть.

Встраивание SQL Server Express в приложения

Встраивание SQL Server Express в пользовательские приложения

4 голосов
/ 23 апреля 2009

Я озадачен.

Вы запрашиваете встроенную базу данных, где сама база данных хранится на сервере. что означает сохранение файла данных на сетевом ресурсе. Затем вы говорите, что SQL Compact Edition не будет работать ... за исключением того, что если посмотреть на этот документ:

Документ Word:
Выбор между SQL Server 2005 Compact Edition и SQL Server 2005 Express Edition

На стр. 8 рядом с надписью «Хранилище файлов данных на сетевом ресурсе» установлен большой зеленый флажок.

Так что мне кажется, что ваша первая мысль была правильной.

2 голосов
/ 16 мая 2010

Рассматривали ли вы OODB? Из различных альтернатив с открытым исходным кодом я рекомендую db4o (извините за саморекламу :)), который может работать либо во встроенном, либо в режиме клиент / сервер.

Лучший * * 1005

Адриано

2 голосов
/ 10 августа 2008

Там также Валентина . Я знакомился с этим продуктом, когда работал над проектом Real Basic. Версия RB очень хорошая.

...