Какие существуют варианты быстрого внедрения БД в .NET?

StackOverflow https://stackoverflow.com/questions/1578070

  •  21-09-2019
  •  | 
  •  

Вопрос

Я создаю эту крошечную служебную программу (Windows Forms), и ей нужно будет сохранить немного данных на диск.В терминах БД это будет примерно одна таблица, не более пары тысяч строк, причем каждая строка будет размером менее 1 КБ.

Что бы вы использовали?

Добавлен: Забыл сказать - было бы очень здорово, если бы вся программа представляла собой всего один .EXE-файл (плюс файл данных, конечно).Поэтому я бы предпочел что-то встроенное в .NET.

Это было полезно?

Решение

SQLite.Он маленький и имеет отличная обертка для .Net.

Другие советы

Или есть Esent, встроенная база данных, которая существует в каждой копии Windows.Прочтите об этом здесь: http://ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx

Если вы чувствуете себя смелым, я собрал простую базу данных документов. PieDb (как в «просто как»).

Вы можете использовать SQL Server Compact Edition (входит в состав Visual Studio) или SQLite.

Есть много других, но эти наиболее распространены.

Я большой поклонник SQLite, потому что он маленький, простой и быстрый.есть потрясающий Поставщик АДО.NET для него, который поддерживает Entity Framework.

Если вы говорите об одной таблице, я не совсем понимаю, почему вы считаете, что ДОЛЖНЫ использовать реляционную базу данных для достижения своих целей.А как насчет одного файла?

Естественно, в зависимости от причины, по которой вам необходимо хранить информацию, и способа связи данных, может быть причина, по которой вам понадобится база данных.Но вам следует подумать, действительно ли БД вам нужна в этом случае.

Реляционная база данных не должна БЫТЬ стандартом де-факто для хранения данных.Существует множество альтернатив, которые следует рассмотреть, прежде чем выбирать СУБД.

См., например, сообщение mcintyre321.

Если вы настроены на использование встроенной базы данных, то SQL Server Compact Edition, вероятно, будет вашим лучшим выбором, за которым следует SQLite, занимающий второе место.

Если вы говорите об одной таблице, похоже, что встроенная БД может быть излишним, и вам лучше использовать простой текстовый файл.

Вы можете создать массив своего класса, пометить его как [Сериализуемый] и просто использовать встроенные методы сериализации/десериализации для сохранения.

Я поддерживаю голосование за SQLite.SQL Server CE слишком тяжел для любых встроенных целей, если только вам не нужна простая синхронизация с центральной базой данных — тогда это фантастика.

порт .NET SQLite находится по адресу http://code.google.com/p/csharp-sqlite/.Это чистый .NET, поэтому вы можете объединить ILMer в один .exe.

Для чего-то такого маленького и простого я бы, вероятно, выбрал XML и не использовал бы базу данных.Если вы абстрагируете код CRUD, вы можете позже изменить часть кода уровня данных, чтобы она использовала базу данных, когда данные растут в размере и сложности.

Однажды я исследовал ту же проблему.Из всех возможных кандидатов двое выглядели хорошо.Это SQLite и Firebird (firebirdsql.org).Но у Firebird было несколько больше возможностей, чем у SQLite.

УПД: Вот интересная информация о firebird+dotnet http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

Беркли ДБ также является хорошим выбором для встроенной базы данных.И есть библиотека который предоставляет для него интерфейс .NET 2.0.

Если это не обязательно должна быть SQL-совместимая база данных, я бы также посмотрел на Db4o.Db4o — это объектная база данных для Java и .NET.Версия .NET полностью написана на C#.

Я использую SQL Lite или простой XML-файл с функцией записи дефляции, чтобы минимизировать размер.Быстро и не так грязно.

Попробуй это: https://github.com/mdsoftware/mData.Никаких сторонних разработчиков, все исходные коды включены, а также некоторые приятные вещи, такие как Lisp-подобная обработка данных и компилятор выражений.Я постарался сделать что-то действительно простое, но функциональное.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top