2010-04-01 2 views
1

Я пишу программу на C#, которая должна будет хранить несколько таблиц данных на компьютере пользователя и загружать их обратно при перезапуске программы: до 10000 записей, состоящих из текст и целые числа. Я не хочу использовать CSV-файл, и у меня были проблемы с SQLite. Есть ли другие хорошие варианты?Какую базу данных использовать в .NET

+10

SQLite был бы моим выбором. Какая у вас проблема с SQLite? –

ответ

10

Microsoft эквивалент SQLite - SQL Server Compact. Это бесплатно. Вам просто нужно перераспределить некоторые dll с вашим приложением. Конечный пользователь не будет вынужден устанавливать полноценный продукт db, такой как SQL Server Express или MySQL, для запуска вашего приложения.

+0

Это. Работает с инструментами, легкий. Только проще - сериализация. – Will

+1

Это гораздо лучший вариант, если вы хотите, чтобы поведение типа РСУБД в приложении просто использовалось для локального сопротивления. SQL Express - это SQL Server с искусственно установленным пределом 4 ГБ и несет в себе нетривиальные затраты на установку, помимо постоянно работающего сервера, всегда, если вы не отключите его. SQL CE намного более легкий вес и работает в процессе приложения. –

11

Почему бы просто не сериализовать директивы datatables в двоичном формате и сохранить их на диске. Загрузка будет проще, чем desierlising для datatables снова?

+1

Используя Linq To Objects, вы также можете выполнять запросы (включая объединения), агрегации и т. Д. Против этих объектов. С 10 000 записей вы также получите хорошую скорость (при условии, что у вас есть только несколько таблиц с таким количеством записей, конечно). Я получил довольно мгновенный ответ с примерно 50 000 записей. Время для десериализации, которое вы не будете делать по каждому запросу. Память, очевидно, является пределом, особенно если вы используете общий хостинг. Вы можете легко сериализовать как двоичный, XML или JSON, в зависимости от того, что вам нужно. – jeffa00

+0

Вы также можете использовать «Изолированное хранилище», менее известную функцию .net для хранения, а также предложение Preet. – SoftwareGeek

+0

Хорошая точка в объектах Linq2Objects Я забыл обо всем этом. –

2

Собираетесь ли вы загружать все в память, а затем выполнять всю обработку данных в памяти? В этом случае использование механизма базы данных будет чрезмерным, возможно, сделает простой XML-файл.

5

Мне нравится выпуск SQL Server Express.

+0

Мне нравится опция Sql Server Express, потому что она дает вам простой путь обновления для полномасштабного продукта. –

1

SQL Express будет работать. Вы можете использовать Linq для SQL и легко обращаться к вашим данным.,

+1

Вы также можете использовать Entity Framework. –

2

Поместите свои DataTables в DataSet (если они еще не были) и используйте метод WriteXml DataSet для сохранения содержимого в файле XML и ReadXml для восстановления вашего DataSet.

Если ваше приложение уже написано для работы с DataTables (т. Е. Вы используете Sort, Select и т. Д. Непосредственно в DataTable), это ваше самое простое и простое решение. Полученный XML-файл может быть слишком большим для ваших морских свиней (поскольку XML довольно многословный), но, вероятно, не дал 10 000 строк.

1

Лично я люблю SQLite (совместно с провайдером .NET с открытым исходным кодом, System.Data.SQLite). Я не уверен, какие проблемы у вас возникли с SQLite, но, может быть, переход на простой в использовании провайдер поможет.

+0

Это то, что мы используем ... как для компактной рамки, так и для рабочего стола. Отлично работает для наших целей. –

0

Firebird отлично работает с dotNet и может использоваться для этого.

Смежные вопросы