Найти в Дзене

Массовый перенос таблиц из Ms Access

Когда таблиц много в Microsoft Access, ручное описание каждой превращается в рутину. В экосистеме .NET есть два пути автоматизации: один — профессиональный (EF Core), другой — быстрый (генераторы кода). Если в Access много связей (Foreign Keys), лучше использовать EF Core. У него есть функция Scaffold (обратный инжиниринг), которая сама просканирует базу и создаст все классы C#. Способ 2: Использование T4-шаблонов или расширений Если вы используете легкий sqlite-net-pcl, то «скаффолдинг» из коробки не работает. Но можно сделать так: Важные нюансы при большом количестве таблиц: // Групповое создание таблиц
await db.CreateTablesAsync(
    CreateFlags.None,
    typeof(User), typeof(Order), typeof(Product), typeof(Category) // и так далее
).ConfigureAwait(false); Выполните эти шаги, чтобы установить расширение (полное название SQLite & SQL Server Compact Toolbox): 1. Установка внутри Visual Studio 2. Как его открыть после установки 3. Как им пользоваться для генерации классов Чтобы не пис
Оглавление

Когда таблиц много в Microsoft Access, ручное описание каждой превращается в рутину. В экосистеме .NET есть два пути автоматизации: один — профессиональный (EF Core), другой — быстрый (генераторы кода).

Способ 1: Entity Framework Core (Рекомендуемый для сложных баз)

Если в Access много связей (Foreign Keys), лучше использовать EF Core. У него есть функция Scaffold (обратный инжиниринг), которая сама просканирует базу и создаст все классы C#.

  1. Конвертируйте Access в SQLite (используйте утилиту DB Browser for SQLite или расширение для VS — SQLite Toolbox).
  2. В Visual Studio откройте Package Manager Console и выполните команду:
  3. Scaffold-DbContext "Data Source=YourDatabase.db" Microsoft.EntityFrameworkCore.Sqlite -OutputDir Models
  4. Результат: VS автоматически создаст папку Models со всеми классами и связями между ними.
Список таблиц для переноса из Microsoft Access в базу данных SQLite
Список таблиц для переноса из Microsoft Access в базу данных SQLite

Способ 2: Использование T4-шаблонов или расширений

Если вы используете легкий sqlite-net-pcl, то «скаффолдинг» из коробки не работает. Но можно сделать так:

  • SQLite Toolbox: Это расширение для Visual Studio (от ErikEJ). Оно позволяет правой кнопкой нажать на файл базы данных и выбрать "Generate sqlite-net classes". Оно мгновенно создаст один файл со всеми классами и нужными атрибутами [PrimaryKey], [Indexed] и т.д. [1]

Важные нюансы при большом количестве таблиц:

  1. Связи (Relationships): sqlite-net-pcl — очень простой Он не умеет автоматически подгружать связанные данные (например, Book.Author). Вам придется делать это вручную или использовать расширение SQLite-Net Extensions.
  2. Архитектура: При большом количестве таблиц лучше создать отдельный сервис 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

  1. Откройте Visual Studio.
  2. В верхнем меню выберите Расширения (Extensions) → Управление расширениями (Manage Extensions).
  3. В строке поиска (справа вверху) введите: SQLite Toolbox.
  4. В списке результатов выберите SQLite & SQL Server Compact Toolbox.
  5. Нажмите кнопку Скачать (Download).
  6. Важно: Закройте Visual Studio. После этого появится окно установщика (VSIX) — нажмите Modify, чтобы завершить процесс.

2. Как его открыть после установки

  1. Снова запустите Visual Studio.
  2. Перейдите в меню Вид (View) → Другие окна (Other Windows).
  3. Выберите SQLite & SQL Server Compact Toolbox.

3. Как им пользоваться для генерации классов

Чтобы не писать код для десятков таблиц вручную:

  1. Подключитесь к вашему файлу базы (нажмите правой кнопкой в окне тулбокса → Add SQLite Connection).
  2. Нажмите правой кнопкой на нужную таблицу или на всю базу целиком.
  3. Выберите в меню: Generate Code → Generate sqlite-net Models... (для sqlite-net-pcl).
  4. Скопируйте полученный код в ваш проект MAUI.

Совет: Перед использованием тулбокса убедитесь, что вы уже сконвертировали ваш файл Access (.accdb) в SQLite (.db или .sqlite), так как расширение работает именно с форматом SQLite.

Бесплатные утилиты для конвертации данных из Access в SQLite?

Самый быстрый и надежный способ перенести данные из Access (.accdb/.mdb) в SQLite — это использовать специализированные конвертеры.

Вот два лучших бесплатных варианта:

1. DB Browser for SQLite (Самый простой путь через CSV)

Это «швейцарский нож» для работы с SQLite.

  1. В Access: Откройте таблицу и выберите Внешние данные → Экспорт → Текстовый файл (сохраните как .csv).
  2. В DB Browser:Создайте новую базу данных.
    Выберите 
    Файл → Импорт → Таблица из CSV-файла.
    Программа сама создаст структуру таблицы и загрузит данные.
  • Плюс: Полный контроль над типами данных при импорте.
  • Минус: Если таблиц 50+, придется делать это 50 раз.

2. Скрипт "Access to SQLite" (Автоматический)

Существует отличный инструмент с открытым исходным кодом на GitHub — access2sqlite.

  • Это небольшая утилита, которая за один клик переносит все таблицы, индексы и данные из файла Access прямо в файл SQLite.
  • Она корректно сопоставляет типы данных (например, AutoNumber в INTEGER PRIMARY KEY).

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