Разработка на .NET MAUI | Какую базу данных надо использовать.
Leadersoft.ru

Разработка на .NET MAUI

С использованием C#, XAML, Ms Access и т.п.

В этом блоге публикуется информация о разработке приложений на .NET MAUI .NET MAUI (Multi-platform App UI) — это бесплатный кроссплатформенный фреймворк от Microsoft для создания нативных приложений с использованием C# и XAML. Простыми словами: вы пишете код один раз, и он работает сразу на Android, iOS, macOS и Windows.

Какую базу данных надо использовать.

Использовать базу данных Microsoft Access (.accdb / .mdb) напрямую в проектах .NET MAUI нельзя по нескольким фундаментальным причинам:

  1. Отсутствие кроссплатформенности
  • Только Windows: Движок Microsoft Access (ACE/Jet) — это чисто Windows-технология. Он завязан на системные библиотеки Windows и COM-интерфейсы.
  • Проблема MAUI: .NET MAUI предназначен для работы на Android, iOS и macOS, где этого движка просто не существует. Вы не сможете запустить драйвер Access на iPhone или Android-планшете. 

  1. Ограничения среды выполнения (.NET Runtime)
  • Для работы с Access обычно используются провайдеры OLEDB или ODBC.
  • В современных кроссплатформенных реализациях .NET (которые используют мобильные платформы) эти провайдеры либо не поддерживаются, либо ограничены, так как требуют специфических библиотек операционной системы Windows. 
  1. Технические лимиты Access
  • Локальная сеть (LAN): Access спроектирован для работы внутри локальной сети через файловый доступ. Он плохо работает в «нестабильных» сетях и совершенно не подходит для мобильного интернета.
  • Безопасность: Хранить файл Access внутри мобильного приложения небезопасно, а прямое подключение мобильного устройства к файлу на сервере технически практически нереализуемо и ведет к разрушению данных.

Что использовать вместо Access?

Если у вас уже есть готовая база в Access, данные из неё лучше всего экспортировать в SQLite или мигрировать на полноценный SQL Server. 

Решение  Когда выбирать
SQLite Если вам нужна локальная база данных прямо на устройстве (самый популярный выбор для MAUI).
REST API + SQL Server/PostgreSQL Если данные должны храниться на сервере и быть доступны всем пользователям. Приложение общается с сервером через интернет.
Azure Mobile Apps / Firebase Если нужна облачная синхронизация и работа в офлайн-режиме.
 

Рекомендуется для MAUI - sqlite-net-pcl 

Это популярная библиотека-обертка с открытым исходным кодом, которую Microsoft официально рекомендует в документации по .NET MAUI. 

  • Тип: Легковесный ORM.
  • Стиль работы: Вы работаете с объектами C#. Библиотека сама создает таблицы на основе ваших классов (атрибуты [Table], [PrimaryKey]).
  • Плюсы:
    • Минимум кода: метод CreateTable<T>()создает схему автоматически.
    • Встроенная поддержка асинхронности (SQLiteAsyncConnection).
    • Проще в освоении для мобильной разработки.
  • Минусы: Ограниченная поддержка сложных SQL-функций и связей (например, внешние ключи требуют дополнительных усилий). 

Microsoft.Data.Sqlite

Это официальный низкоуровневый провайдер от Microsoft, реализующий стандартные абстракции ADO.NET. 

  • Тип: NET провайдер (низкий уровень).
  • Стиль работы: Вы вручную пишете SQL-запросы (CREATE TABLE, INSERT, SELECT), создаете команды (SqliteCommand) и читаете данные через ридеры (SqliteDataReader).
  • Плюсы:
    • Полный контроль над SQL и производительностью (в некоторых тестах в разы быстрее при массовых вставках).
    • Поддерживает современные возможности SQLite (например, FTS5, шифрование).
    • Является основой для Entity Framework Core.
  • Минусы: Требует написания большого количества шаблонного кода (Boilerplate). 

Сводная таблица

Функция

sqlite-net-pcl

Microsoft.Data.Sqlite

Подход

ORM (Объекты)

SQL (Запросы)

Схема БД

Создается из классов C#

Создается вручную через SQL

Сложность

Низкая (быстрый старт)

Средняя (нужно знать SQL)

Производительность

Хорошая для обычных задач

Высокая для сложных операций

Для чего лучше

Типичные мобильные приложения

Сложная логика БД или EF Core

 

Для установки любой из этих баз данных в проект .NET MAUI используется менеджер пакетов NuGet.

Установка sqlite-net-pcl (ORM)

Этот вариант идеален для быстрого старта.

  • Нажмите правой кнопкой на ваш проект в Solution Explorer и выберите Manage NuGet Packages.
  • Найдите и установите пакет: sqlite-net-pcl.
  • Важно: Для корректной работы на всех платформах также установите пакет bundle_green (обычно подтягивается автоматически, но лучше проверить).

Установка Microsoft.Data.Sqlite (ADO.NET)

Если вы предпочитаете писать чистый SQL.

  1. В NuGet-менеджере найдите и установите: Data.Sqlite.
  2. Для полноценной работы с Entity Framework Core (если нужно) устанавливается пакет EntityFrameworkCore.Sqlite. [2]

Как физически создать файл базы?

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

Пример инициализации для sqlite-net-pcl:

// Определяем путь к файлу (работает и на iOS, и на Android)
string dbPath = Path.Combine(FileSystem.AppDataDirectory, "MyData.db3");
// Создаем подключение (это также создаст файл, если его нет)
var db = new SQLiteAsyncConnection(dbPath);
// Создаем таблицу на основе класса
await db.CreateTableAsync<MyModel>();

А как быть с данными из Access?

Файл .accdb нельзя просто скопировать в проект. Вам нужно:

  1. Экспортировать данные из Access в формат .sql или .csv.
  2. Импортировать их в новый файл SQLite (например, через утилиту DB Browser for SQLite).
  3. Добавить готовый файл .db3 в проект MAUI как Embedded Resource или MauiAsset, чтобы приложение могло скопировать его в свою рабочую папку при первом запуске.

 Источник статьи

Добавить комментарий

Loading