C# SQLite.CodeFirst-在创建模型时不能使用上下文

C# SQLite.CodeFirst-在创建模型时不能使用上下文,c#,wpf,entity-framework,sqlite,C#,Wpf,Entity Framework,Sqlite,我正在使用SQLite db处理WPF应用程序。尝试使用SQLite.CodeFirst使用代码优先方法设计数据库 错误为:{“创建模型时无法使用上下文。如果在OnModelCreating方法中使用上下文,或者多个线程同时访问同一上下文实例,则可能引发此异常。请注意,DbContext和相关类的实例成员不保证线程安全。”} 我在使用代码: DbContext: class GestDbContext : DbContext { override protected void OnMod

我正在使用SQLite db处理WPF应用程序。尝试使用SQLite.CodeFirst使用代码优先方法设计数据库

错误为:{“创建模型时无法使用上下文。如果在OnModelCreating方法中使用上下文,或者多个线程同时访问同一上下文实例,则可能引发此异常。请注意,DbContext和相关类的实例成员不保证线程安全。”}

我在使用代码:

  • DbContext:

    class GestDbContext : DbContext
    {
        override protected void OnModelCreating(DbModelBuilder modelBuilder)
        {
            var model = modelBuilder.Build(Database.Connection);
            IDatabaseCreator sqliteDatabaseCreator = new SqliteDatabaseCreator();
            sqliteDatabaseCreator.Create(Database, model);
        }
    
        public DbSet<GestUser> GestUsers { get; set; }
        public DbSet<Gesture> Gestures { get; set; }
        public DbSet<UserSettings> UserSettings { get; set; }
    
    }
    
  • App.config

    
    

  • 我在实例变量中保存了OnModelCreating中的modelBuilder

    private DbModelBuilder _modelBuilder;
    override protected void OnModelCreating(DbModelBuilder modelBuilder)
    {
        _modelBuilder = modelBuilder;
    }
    
    然后在公共方法中使用它:

    public void Init()
    {
      var model = _modelBuilder.Build(Database.Connection);
      IDatabaseCreator sqliteDatabaseCreator = new SqliteDatabaseCreator();
      sqliteDatabaseCreator.Create(Database, model);
    }
    
    然后执行一次(我需要创建一次结构)


    IDatabaseCreator.Create()-方法做什么?我假设您在使用上下文时试图在模型创建时播种值,或者modelbuilder是错误的。
    public void Init()
    {
      var model = _modelBuilder.Build(Database.Connection);
      IDatabaseCreator sqliteDatabaseCreator = new SqliteDatabaseCreator();
      sqliteDatabaseCreator.Create(Database, model);
    }
    
    public MainWindowViewModel()
    {
      using (var context = new GestDbContext())
      {
        var entity = context.Gestures.Any();
        context.Init();
      }
    }