LINQ + облегченная база данных:какую БД мне выбрать?
Вопрос
Я запускаю новое веб-приложение.Он будет размещен на сервисе, за который взимается дополнительная плата за SQL Server, и, честно говоря, я не думаю, что сайту нужна такая большая база данных.Сейчас модель данных состоит из 5 таблиц.И я буду удивлен, если самая большая таблица когда-либо будет содержать 10 тысяч записей.
Поэтому я бы хотел, чтобы БД была легкой. SQLite изначально заинтересовал меня, потому что мне нужно изучить его для Android.Но отсутствие внешних ключей заставляет меня съеживаться.Конечно, можно реализовать что-то, похожее на ограничения внешнего ключа, но это кажется нереляционным. Жар-птица кажется единственной легкой (и бесплатной) базой данных, поддерживающей FK.
Кроме того, мне бы очень хотелось освоить LINQ в этом проекте.Пока что я нашел только дбЛИНК это позволяет мне использовать SQLite или Firebird с LINQ.Сейчас это версия 0.18, так что до прайм-тайма еще далеко.Я запустил тесты SQLite с помощью dbLinq, и они прошли то, что мне нужно.
Была еще одна реализация LINQ для SQLite, но все ссылки, которые я нашел на нее, заканчиваются ошибками 404.
Итак, какие у меня есть варианты облегченных баз данных, совместимых с LINQ?Все компактные версии SQL Server отсутствуют, за исключением тех, которые можно развернуть с помощью XCOPY. без установки агента/сервиса?Я не могу просить хостера установить новое программное обеспечение, так как сомневаюсь, что они это сделают, и я хочу, чтобы приложение было легко переносимым (по отношению к хостингу).
Список на данный момент:
- SQLite
- Жар-птица
- SQL-сервер компактный
- VistaDB
Обновлять: Я опробовал все версии и написал здесь свои впечатления.Краткая версия:SQLite безоговорочно побеждает.Это единственный продукт, который имеет хороший графический интерфейс, не требует установки и бесплатен.
Решение 4
SQLite.Имеет хороший графический интерфейс (не меньше, чем с автоматическим завершением), не требует установки, бесплатен и будет работать независимо от того, где я размещаю веб-сайт.Я знаю, что отвечаю на свой вопрос, но никто больше не упомянул в своем ответе только SQLite.
Важный:SQLite потребуется веб-хост, использующий режим полного доверия, если вы хотите запустить его на общем хостинге.
Другие советы
Вы можете использовать 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;
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.
Я бы посоветовал вам взглянуть на VistaDB.Так сойдет именно то, что ты ищешь благодаря дополнительному преимуществу по сравнению с SQLCE и SQLite, заключающемуся в поддержке представлений, хранимых процедур и триггеров.Фактически, он поддерживает написание процедур и триггеров как в TSQL, так и в .NET, поэтому вы можете использовать свой SQL Server И свои знания .NET.
SQL-сервер Экспресс
VistaDB — единственная альтернатива, если вы собираетесь запустить свой веб-сайт на общем хостинге (почти все из них не позволяют запускать ваши веб-сайты в режиме полного доверия), а также если вам нужен простой веб-сайт с возможностью развертывания в виде копии.