具有两个DBContext的两个迁移集会产生错误

时间:2020-07-19 07:16:24

标签: entity-framework-core asp.net-core-3.1 .net-core-3.1

我正在使用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

这里可能是什么问题? 任何帮助都将受到高度赞赏

亲切的问候, 哈尼

0 个答案:

没有答案