我正在使用SQLite数据库的WPF应用程序。尝试用SQLite.CodeFirst的代码优先方法设计数据库。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; } }
MainWindowViewModel - 只是初始化数据库
#region Constructor public MainWindowViewModel() { using (var context = new GestDbContext()) { var entity = context.Gestures.Any(); } } #endregion
的App.config
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> </providers> </entityFramework> <system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite.EF6" /> <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> </DbProviderFactories> </system.data> <connectionStrings> <add name="connection" connectionString="Data Source=.\GestDB" providerName="System.Data.SqlLite"/> </connectionStrings>
什么的IDatabaseCreator.Create() - 方法做?我假设你正在试图在创建模型时使用上下文来创建值,或者模型构建者是错误的。 – DevilSuichiro