首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建初始迁移EF Core 3 asp.net Core时出错

创建初始迁移EF Core 3 asp.net Core时出错
EN

Stack Overflow用户
提问于 2019-10-12 10:57:42
回答 1查看 7.1K关注 0票数 2

我有以下课程:

代码语言:javascript
复制
public class Quiz 
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public string UserToken { get; set; }
        public List<JoinQuizAndArea> AreasOfQuizzes { get; set; }
        public List<QuizQuestion> Questions { get; set; }
}
public class QuizQuestion
    {
        public int ListRanking { get; set; }
        public string Question { get; set; }
        public string Answer1 { get; set; }
        public string Answer2 { get; set; }
        public string Answer3 { get; set; }
        public int CorrectAnswer { get; set; }
        public int QuizId { get; set; }
        public Quiz Quiz { get; set; }
    }
public class AreaOfQuiz
    {
        public int Id { get; set; }
        public string Area { get; set; }
        public List<JoinQuizAndArea> AreasOfQuizzes { get; set; }
    }
public class JoinQuizAndArea
    {
        public int QuizId { get; set; }
        public Quiz Quiz { get; set; }
        public int AreaId { get; set; }
        public AreaOfQuiz Area { get; set; }

    }

我的DbContext:

代码语言:javascript
复制
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
    {
        public DbSet<IdentityUser> Users { get; set; }
        public DbSet<Quiz> Quizzes { get; set; }
        public DbSet<AreaOfQuiz> Areas { get; set; }
        public DbSet<QuizQuestion> Questions { get; set; }

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<IdentityUser>();

            modelBuilder.Entity<Quiz>();

            modelBuilder.Entity<AreaOfQuiz>();

            modelBuilder.Entity<QuizQuestion>()
                .HasKey(quizQuestion => new { quizQuestion.QuizId, quizQuestion.ListRanking});

            modelBuilder.Entity<JoinQuizAndArea>()
                .HasKey(joinEntity => new { joinEntity.QuizId, joinEntity.AreaId });
            modelBuilder.Entity<JoinQuizAndArea>()
                .HasOne(join => join.Area)
                .WithMany(c =>c.AreasOfQuizzes)
                .HasForeignKey(join => join.QuizId);
            modelBuilder.Entity<JoinQuizAndArea>()
                .HasOne(bc => bc.Quiz)
                .WithMany(c => c.AreasOfQuizzes)
                .HasForeignKey(bc => bc.AreaId);

            base.OnModelCreating(modelBuilder);
        }
    }

当我尝试创建初始迁移时,我得到了以下错误:,在访问Microsoft.Extensions.Hosting服务时发生了错误。在没有应用程序服务提供程序的情况下继续。错误:仅对类型上的顶级单个成员支持成员的自定义配置。无法创建类型为“ApplicationDbContext”的对象。有关设计时支持的不同模式,请参见 ,有人知道如何解决此问题吗??谢谢:)

更新我的启动类

代码语言:javascript
复制
public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();

            services.AddControllers();

            var mappingConfig = new MapperConfiguration(mapConfig =>
            {
                mapConfig.AddProfile(new QuizProfile());
                mapConfig.AddProfile(new AreaOfQuizProfile());
                mapConfig.AddProfile(new QuizQuestionProfile());
                mapConfig.AddProfile(new QuizIdAreaIdToJoinQuizAndAreaProfile());
            });
            IMapper mapper = mappingConfig.CreateMapper();
            services.AddSingleton(mapper);

            services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["ConnectionString:QuizWorldDb"]));

            services.AddIdentity<IdentityUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(config =>{
                config.RequireHttpsMetadata=false;
                config.SaveToken = true;
                config.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Secret"])),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseAuthentication();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCors(builder => builder
                   .AllowAnyOrigin()
                   .AllowAnyMethod()
                   .AllowAnyHeader());

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2020-03-18 12:17:48

对我来说,卸货码头-写作工作。

打扫和建造。

负责移民。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58353418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档