提问人:tudoooor 提问时间:11/10/2023 更新时间:11/10/2023 访问量:24
SQLite 错误 1:“没有这样的表:__EFMigrationsHistory”时尝试在 WPF 应用程序中运行第一个 update-database 命令
SQLite Error 1: 'no such table: __EFMigrationsHistory' when trying to run the first update-database command in WPF Application
问:
当我尝试在我的数据库上应用初始迁移时,我遇到此错误SQLite错误1:“没有这样的表:__EFMigrationsHistory”。
我想指定命令add-migration Initial可以正常工作并创建迁移,但是当我想应用它时,我收到该错误。
我将在下面附上 ApplicationDbContext 的创建。
namespace ToDoListApp.Data;
public class ApplicationDbContext : DbContext
{
private readonly string _connectionString = ConfigurationManager.AppSettings["Database"];
public DbSet<Task> Tasks { get; set; }
public ApplicationDbContext(DbContextOptions options) : base(options)
{
}
public ApplicationDbContext()
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new TasksConfiguration());
}
}
namespace ToDoListApp.Data;
public class ApplicationDesignTimeDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
private readonly string _connectionString = ConfigurationManager.AppSettings["Database"];
public ApplicationDbContext CreateDbContext(string[] args)
{
var options = new DbContextOptionsBuilder().UseSqlite(_connectionString).Options;
return new ApplicationDbContext(options);
}
}
public class TasksConfiguration : IEntityTypeConfiguration<Task>
{
public void Configure(EntityTypeBuilder<Task> builder)
{
builder.HasKey(t => t.Id);
builder.Property(t => t.Title)
.HasMaxLength(35)
.IsRequired();
builder.Property(t => t.Description)
.HasMaxLength(200)
.IsRequired();
}
}
namespace ToDoListApp;
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
private IServiceProvider _serviceProvider;
private string _connectionString = @ConfigurationManager.AppSettings["Database"];
public App()
{
ConfigureServices();
}
private void ConfigureServices()
{
var services = new ServiceCollection();
services.AddSingleton<TaskWindow>();
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlite(_connectionString));
services.AddScoped<IRepository<Task>, TaskRepositoryDatabase>();
services.AddScoped<IService<Task>, TaskService>();
services.AddScoped<TaskViewModel>();
_serviceProvider = services.BuildServiceProvider();
}
protected override void OnStartup(StartupEventArgs e)
{
var taskWindow = _serviceProvider.GetRequiredService<TaskWindow>();
taskWindow.DataContext = _serviceProvider.GetRequiredService<TaskViewModel>();
taskWindow.Show();
base.OnStartup(e);
}
}
我已经尝试了我在网上找到的所有东西,但没有任何效果。这就是我现在写这篇文章的原因。
答: 暂无答案
评论
DbContext
Migrate()
add-migration
Migrate()
DbContext