Когда таблиц много в Microsoft Access, ручное описание каждой превращается в рутину. В экосистеме .NET есть два пути автоматизации: один — профессиональный (EF Core), другой — быстрый (генераторы кода).
Способ 1: Entity Framework Core (Рекомендуемый для сложных баз)
Если в Access много связей (Foreign Keys), лучше использовать EF Core. У него есть функция Scaffold (обратный инжиниринг), которая сама просканирует базу и создаст все классы C#.
- Конвертируйте Access в SQLite (используйте утилиту DB Browser for SQLite или расширение для VS — SQLite Toolbox).
- В Visual Studio откройте Package Manager Console и выполните команду:
- Scaffold-DbContext "Data Source=YourDatabase.db" Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models
Результат: VS автоматически создаст папку Models со всеми классами и связями между ними.
Способ 2: Использование T4-шаблонов или расширений
Если вы используете легкий sqlite-net-pcl, то «скаффолдинг» из коробки не работает. Но можно сделать так:
- SQLite Toolbox: Это расширение для Visual Studio (от ErikEJ). Оно позволяет правой кнопкой нажать на файл базы данных и выбрать "Generate sqlite-net classes". Оно мгновенно создаст один файл со всеми классами и нужными атрибутами [PrimaryKey], [Indexed] и т.д. [1]
Важные нюансы при большом количестве таблиц:
- Связи (Relationships): sqlite-net-pcl — очень простой Он не умеет автоматически подгружать связанные данные (например, Book.Author). Вам придется делать это вручную или использовать расширение SQLite-Net Extensions.
- Архитектура: При большом количестве таблиц лучше создать отдельный сервис DatabaseService, где будут инициализироваться все таблицы разом:
// Групповое создание таблиц
await db.CreateTablesAsync(
CreateFlags.None,
typeof(User), typeof(Order), typeof(Product), typeof(Category) // и так далее
).ConfigureAwait(false);
Как установить SQLite Toolbox в Visual Studio
Выполните эти шаги, чтобы установить расширение (полное название SQLite & SQL Server Compact Toolbox):
1. Установка внутри Visual Studio
- Откройте Visual Studio.
- В верхнем меню выберите Расширения (Extensions) → Управление расширениями (Manage Extensions).
- В строке поиска (справа вверху) введите:
SQLite Toolbox.
- В списке результатов выберите SQLite & SQL Server Compact Toolbox.
- Нажмите кнопку Скачать (Download).
- Важно: Закройте Visual Studio. После этого появится окно установщика (VSIX) — нажмите Modify, чтобы завершить процесс.
2. Как его открыть после установки
- Снова запустите Visual Studio.
- Перейдите в меню Вид (View) → Другие окна (Other Windows).
- Выберите SQLite & SQL Server Compact Toolbox.
3. Как им пользоваться для генерации классов
Чтобы не писать код для десятков таблиц вручную:
- Подключитесь к вашему файлу базы (нажмите правой кнопкой в окне тулбокса → Add SQLite Connection).
- Нажмите правой кнопкой на нужную таблицу или на всю базу целиком.
- Выберите в меню: Generate Code → Generate sqlite-net Models... (для
sqlite-net-pcl).
- Скопируйте полученный код в ваш проект MAUI.
Совет: Перед использованием тулбокса убедитесь, что вы уже сконвертировали ваш файл Access (.accdb) в SQLite (.db или .sqlite), так как расширение работает именно с форматом SQLite.
Бесплатные утилиты для конвертации данных из Access в SQLite?
Самый быстрый и надежный способ перенести данные из Access (.accdb/.mdb) в SQLite — это использовать специализированные конвертеры.
Вот два лучших бесплатных варианта:
1. DB Browser for SQLite (Самый простой путь через CSV)
Это «швейцарский нож» для работы с SQLite.
- В Access: Откройте таблицу и выберите Внешние данные → Экспорт → Текстовый файл (сохраните как .csv).
- В DB Browser:
- Создайте новую базу данных.
- Выберите Файл → Импорт → Таблица из CSV-файла.
- Программа сама создаст структуру таблицы и загрузит данные.
- Плюс: Полный контроль над типами данных при импорте.
- Минус: Если таблиц 50+, придется делать это 50 раз.
2. Скрипт "Access to SQLite" (Автоматический)
Существует отличный инструмент с открытым исходным кодом на GitHub — access2sqlite.
- Это небольшая утилита, которая за один клик переносит все таблицы, индексы и данные из файла Access прямо в файл SQLite.
- Она корректно сопоставляет типы данных (например,
AutoNumber в INTEGER PRIMARY KEY).
Источник статьи