找不到提供程序'System.Data.SQLite'的MigrationSqlGenerator

时间:2019-05-20 19:23:54

标签: c# entity-framework sqlite

我将SQLiteEntityFramework一起使用。 当我尝试运行命令enable-migrations时,出现此错误。

  

未找到提供程序'System.Data.SQLite'的MigrationSqlGenerator。在目标迁移配置类中使用> 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 个答案:

答案 0 :(得分:1)

用于实体框架的SQLite提供程序不支持SQL迁移。 现在必须手动编写迁移和数据库生成SQL

答案 1 :(得分:0)

您的代码的链接: https://qiita.com/minoru-nagasawa/items/961f6eae809a379c1b52

您的问题的解决方案: https://github.com/minoru-nagasawa/SQLiteMigrationSample

步骤:

  1. PM> enable-migrations(出现错误:未找到MigrationSqlGenerator,请忽略。此错误,sqlite数据库文件已在dbfilepath中生成)

  2. 在Configuration.cs中添加此行(此步骤对于此问题非常重要,应该在Step1之后):

public Configuration()
{
    AutomaticMigrationsEnabled = false;
    SetSqlGenerator("System.Data.SQLite", new SQLiteMigrationSqlGenerator());// the Golden Key
}
  1. PM>添加迁移initOrWhatEverYourName

  2. PM>更新数据库

  3. 完成。