【问题标题】:There was an error running the selected code generator: No Parameterless constructor defined for type运行所选代码生成器时出错:没有为类型定义无参数构造函数
【发布时间】:2020-06-24 06:27:00
【问题描述】:

我已经创建了模型和 DbContext,但是当我要使用 EF 核心生成控制器时,会显示错误。

LocationDbContext

using Intranet.Models.CorpComm;
using System.Linq;
using Microsoft.EntityFrameworkCore;

namespace Intranet.Data.CorpComm
{
    public class LocationDbContext : DbContext
    {
        public LocationDbContext(DbContextOptions<LocationDbContext> options) : base(options)
        {
        }

        public DbSet<Location> Locations { get; set; }
    }
}

【问题讨论】:

  • 你能在这里分享你的 dbcontext 类的代码吗!谢谢
  • 我们不会检查代码库和挖掘 github 上随机散落的项目(当然,除非您付费),请阅读How to Ask
  • 链接失效了
  • “没有为 LocationDbContext 类型定义无参数构造函数”,你说。嗯..这意味着什么?..哦!我知道了!没有为LocationDbContext 定义无参数构造函数!这很难!
  • @JoseBalerosJr,新手可以,但你需要更好奇。例如,如果您不知道 Parameterless constructor 是什么 - 只需问它(例如在 google 上)。在那里你可以发现无参构造函数是一个没有参数的构造函数。如果您不知道 constructor 是什么 - 您需要先学习很多东西,而 .net Core MVC 对您来说太难了。然后开始here

标签: c# razor-pages asp.net-core-3.1 ef-core-3.1


【解决方案1】:

这是一个无参数的构造函数。

public LocationDbContext() { }

你应该像这样添加它:

using Intranet.Models.CorpComm;
using System.Linq;
using Microsoft.EntityFrameworkCore;

namespace Intranet.Data.CorpComm
{
    public class LocationDbContext : DbContext
    {
        public LocationDbContext(DbContextOptions<LocationDbContext> options) : base(options)
        {
        }
        public LocationDbContext() { } // here
        public DbSet<Location> Locations { get; set; }
    }
}

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,无法自己解决,在尝试寻找解决方案时来到这里。 我解决了我的使用问题 我添加了一个 OnConfiguring 方法来设置连接字符串并删除了参数化构造函数。

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
     optionsBuilder.UseSqlServer("<connection string");
    }
    

    代码生成器成功执行后,我又回到参数化构造函数,一切都按预期工作。

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2021-04-25
      • 2020-08-10
      • 2019-10-15
      • 2020-08-31
      相关资源
      最近更新 更多