Не найден MigrationSqlGenerator для провайдера 'System.Data.SQLite' - PullRequest
0 голосов
/ 20 мая 2019

Я использую SQLite с EntityFramework. Когда я пытаюсь выполнить команду enable-migrations, я получаю эту ошибку.

Не найден MigrationSqlGenerator для провайдера 'System.Data.SQLite'. Используйте> SetSqlGenerator метод в классе конфигурации целевых миграций, чтобы> зарегистрировать дополнительные генераторы SQL

Вот мой DBContext и моя DBConfiguration

public class SQLiteConfiguration : DbConfiguration
   {
      public SQLiteConfiguration()
      {
        SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance);
        SetProviderFactory("System.Data.SQLite.EF6", 
SQLiteProviderFactory.Instance);
        SetProviderServices("System.Data.SQLite", (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)));
    }
}
public class ApplicationContextDB : DbContext
{

    static private string dbpath;
    static ApplicationContextDB()
    {
        var exeDir = AppDomain.CurrentDomain.BaseDirectory;
        var exeDirInfo = new DirectoryInfo(exeDir);
        var projectDir = exeDirInfo.Parent.Parent.FullName;
        dbpath= $@"{projectDir}\DBFolder\MyDB.db";
    }

    public ApplicationContextDB() : base(new SQLiteConnection($"DATA Source={dbpath}"), false)
    {
    }


    public ApplicationContextDB(DbConnection connection) : base(connection, true)
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }
    public DbSet<User> Users{ get; set; }

    public DbSet<Work> Works{ get; set; }
}

Ответы [ 2 ]

1 голос
/ 21 мая 2019

SQLite-провайдер для структуры сущностей не поддерживает миграцию SQL. SQL миграции и генерации базы данных должны быть написаны вручную на данный момент

0 голосов
/ 03 июня 2019

ссылка для ваших кодов: https://qiita.com/minoru-nagasawa/items/961f6eae809a379c1b52

решение для вашего запроса: https://github.com/minoru-nagasawa/SQLiteMigrationSample

Шаги:

  1. PM> enable-migrations(получает ошибку: MigrationSqlGenerator не найден, игнорируйте эту ошибку, файл базы данных sqlite уже сгенерирован в dbfilepath)

  2. добавьте эту строку в Configuration.cs (этот шаг оченьважно для вопроса и должно быть после шага 1):

public Configuration()
{
    AutomaticMigrationsEnabled = false;
    SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator());// the Golden Key
}

PM> добавление-миграция initOrWhatEverYourName

PM> update-database

DONE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...