我正在使用ef核心3.1.4和.net核心3.1.4,并尝试使用两个迁移集与两个不同的数据库提供程序实现迁移,我遵循该文档,并为Sqlite添加了新的DbContext,以及添加迁移时,出现以下错误:
无法创建类型为'MySqliteDbContext'的对象。有关设计时支持的不同模式,请参见https://go.microsoft.com/fwlink/?linkid=851728
这是我的数据上下文:
using System;
using Domain;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
namespace Persistence
{
public class DataContext : IdentityDbContext<AppUser>
{
public DataContext(DbContextOptions options) : base(options)
{
}
public DbSet<App> Apps { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
}
这是我用于Sqlite的新DBContext:
using Microsoft.EntityFrameworkCore;
namespace Persistence
{
public class MySqliteDbContext : DataContext
{
public MySqliteDbContext(DbContextOptions options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data source=db.db");
}
}
这是我在API项目中的startup.cs中配置服务的方式:
if (Configuration["Provider"] == "SQLlite")
{
services.AddDbContext<DataContext>(opt =>
opt.UseSqlite(Configuration.GetConnectionString("SQLlite")));
}
else if (Configuration["Provider"] == "MSSQL")
{
services.AddDbContext<DataContext>(opt =>
opt.UseSqlServer(Configuration.GetConnectionString("SQLServerConnection")));
}
else
{ throw new ArgumentException("Not a valid database type"); }
下面是我的入门API项目中的appsettings.json:
{
"Provider": "SQLlite",
"ConnectionStrings": {
"SQLlite": "Data source=db.db",
"SQLServerConnection": "Server=(localdb)\\mssqllocaldb;Database=db;Trusted_Connection=True;MultipleActiveResultSets=true",
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
我通过运行以下命令添加迁移:
dotnet ef migrations add InitialCreate --context MySqliteDbContext --output-dir Migrations/SqliteMigrations -p Persistence -s API
这里可能是什么问题? 任何帮助都将受到高度赞赏
亲切的问候, 哈尼