为什么脚手架不能按预期工作?

问题描述 投票:2回答:1

我正在尝试安装脚手架,但出现以下错误:

运行选定的代码生成器时出错:'未为类型'MvcProduct.Data.MvcProductContext'定义无参数构造函数。'

在这里您可以看到它的图像:Error when scaffolding

以下是我的MvcProductContext

using Microsoft.EntityFrameworkCore;
using MvcProduct.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MvcProduct.Data
{
    public class MvcProductContext : DbContext
    {
        public MvcProductContext(DbContextOptions<MvcProductContext> options)
            : base(options)
        {
        }

        public DbSet<Product> Product { get; set; }
    } 

appsettings.json

 {
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "MvcProductContext": "Server=(localdb)\\mssqllocaldb;Database=MvcProductContext-1;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

[ConfigureServices文件中的Startup.cs方法:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.AddDbContext<MvcProductContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("MvcProductContext")));
}

我还试图在MvcProductContext类中添加第二个构造函数。 (我想避免但又不想做的事情)没有任何参数的第二个构造函数。但是,如果我这样做,我只会得到另一个错误,它指出:

运行所选代码生成器时发生错误:'尚未为此DbContext配置数据库提供程序。可以通过覆盖DbContext.OnConfiguring方法或通过在应用程序服务提供程序上使用AddDbContext来配置提供程序。如果是应用程序服务提供商上的AddDbContext。如果使用AddDbContext,还请确保您的DbCotnext类型在其构造函数中接受DbContextOptions<TContext>对象,并将其传递给DbContext的基本构造函数。

Microsoft也是如此。他们正在使用Entity Framework为MVC控制器提供视图。他们这样做时并没有在MvcMovieCOntext

类中添加第二个构造函数。他们的MvcMovieContextClass对应于我的MvcProductContext类。

任何帮助将不胜感激。

我正在尝试搭建支架,但出现以下错误:运行所选代码生成器时出错:'未为类型'MvcProduct.Data.MvcProductContext'定义无参数构造函数。' ...

c# entity-framework model-view-controller asp.net-core-mvc asp.net-mvc-scaffolding
1个回答
0
投票

只需将设计工厂类添加到您的项目中,然后再次尝试脚手架。它将实例化您的DbContext。

© www.soinside.com 2019 - 2024. All rights reserved.