LINQ + облегченная база данных: какую базу данных выбрать? - PullRequest
4 голосов
/ 27 января 2009

Я запускаю новое веб-приложение. Он будет размещен в службе, которая взимает дополнительную плату за SQL Server, и, честно говоря, я не думаю, что сайту нужна такая большая часть базы данных. На данный момент модель данных составляет 5 таблиц. И я удивлюсь, если в самой большой таблице когда-либо будет 10k записей.

Так что я бы хотел, чтобы БД было легким. SQLite изначально заинтересовал меня, потому что мне нужно изучить его для Android. Но отсутствие внешних ключей заставляет меня съеживаться. Конечно, возможно реализовать что-то, что выглядит как ограничения внешнего ключа, но это просто кажется нереляционным. Firebird кажется единственным легким (и бесплатным) БД, который поддерживает FK.

Кроме того, я бы очень хотел промокнуть в LINQ с этим проектом. До сих пор я нашел только dbLINQ , который позволяет мне использовать SQLite или Firebird с LINQ. Это в настоящее время на v0.18, так что это далеко от прайм-тайм. Я запустил тесты для SQLite с помощью dbLinq, и они прошли то, что мне нужно.

Была еще одна реализация LINQ для SQLite, но все ссылки, которые я нашел для нее, заканчиваются в 404-х годах.

Так, каковы мои варианты для облегченных баз данных, которые совместимы с LINQ? Выпущены какие-либо компактные выпуски SQL Server, если только не существует развертываемой XCOPY без установки агента / службы ? Я не могу просить хоста установить новое программное обеспечение, поскольку сомневаюсь, что они это сделают, и я хочу, чтобы приложение было очень переносимым (по отношению к хостингу).

Список пока что:

  • 1024 * SQLite *
  • Firebird
  • SQL Server Compact
  • VistaDB

Обновление: Я перепробовал все версии и написал здесь свои впечатления . Краткая версия: SQLite выигрывает. Это единственный, который имеет хороший графический интерфейс, не требует установки и является бесплатным.

Ответы [ 6 ]

4 голосов
/ 27 января 2009

Вы можете использовать LINQ to SQL, как в существующей базе данных, при условии, что вы можете создать стандартный IDbConnection объект.

Вот некоторый код для использования LINQ в БД Firebird.

DbProviderFactory dbProvider = DbProviderFactories
    .GetFactory("FirebirdSql.Data.FirebirdClient");

DbConnection connection = dbProvider.CreateConnection();
connection.ConnectionString = "some connection string";

DataContext linqContext = new DataContext(connection);

var query = from something in linqContext.GetTable<SomeType>() 
            select something.someproperty;
3 голосов
/ 01 февраля 2009

SQLite. Имеет хороший графический интерфейс (с автоматическим завершением), не требует установки, бесплатен и будет работать независимо от того, где я размещаю сайт. Я знаю, что отвечаю на свой вопрос, но никто другой не добавил в свой ответ только SQLite.

Важно : для SQLite потребуется веб-хост, использующий режим полного доверия, если вы хотите запустить его на виртуальном хостинге.

3 голосов
/ 27 января 2009

Я бы посоветовал вам взглянуть на VistaDB . Он будет делать именно то, что вы ищете с дополнительным преимуществом по сравнению с SQLCE и SQLite, которое поддерживает представления, хранимые процедуры и триггеры. На самом деле он поддерживает написание процедур и триггеров в TSQL, а также .NET, так что вы можете использовать свой SQL Server и свои знания .NET.

3 голосов
/ 27 января 2009

SQL Server Compact Edition (http://en.wikipedia.org/wiki/SQLCE) поддерживает LINQ и все другие инструменты VS, встроен в VS 2008, поддерживает FK и может развертываться в XCOPY с плоским файлом для базы данных. Однако следует помнить, что не без его предостережений, многие вещи, такие как представления или вложенные запросы, падают, и это может быть довольно раздутым, если вы начнете получать размер базы данных довольно большой (то есть 50 МБ +).

SQLite также намного лучше, если здесь используется поставщик SQLite .NET (http://sqlite.phxsoftware.com/), также работает с LINQ и имеет базовую поддержку VS.

2 голосов
/ 25 марта 2009

VistaDB - это единственная альтернатива, если вы собираетесь запускать свой веб-сайт на виртуальном хостинге (почти все они не позволяют запускать ваши веб-сайты в режиме полного доверия), а также если вам нужен простой веб-сайт с возможностью развертывания в x-copy.

2 голосов
/ 27 января 2009

SQL Server Express

...