. net Core -添加脚手架项目“创建DbContext获取模型时出错”

本文关键字:获取 DbContext 模型 出错 创建 Core 添加 脚手架 项目 net | 更新日期: 2023-09-27 18:15:52

每当我尝试为我的项目创建一个新的脚手架项时,我都会收到一个错误声明

创建DbContect实例获取模型时出错没有为该对象定义无参数构造函数。

我已经尝试重建我的项目,我已经成功地生成支架之前,但由于某种原因,当这样做的时候,我没有任何成功。自从我上次添加了一个新的脚手架项以来,没有对我的上下文类做过任何更改。

我已经尝试在我的模型中创建一个空构造函数,但它仍然抛出相同的错误。下面你会发现我的代码,我的模型,我试图脚手架,和我的上下文。

namespace HRIAT.Models
{
    public class Credential
    {
        public Credential() { }
        public int ID { get; set; }
        public string credentialName { get; set; }
        public FundingSource credentialFundingSource { get; set; }
        public string credentialType { get; set; }
        public float credentialCost { get; set; }
        public ICollection<Employee> ec { get; set; }

    }
}

上下文类:

namespace HRIAT.Models
{
    public class HRIATContext : DbContext
    {
        public HRIATContext(DbContextOptions<HRIATContext> options)
            : base(options)
        {
        }

        public DbSet<FundingSource> FundingSource { get; set; }
        public DbSet<Credential> Credential { get; set; }
        public DbSet<Employee> Employee { get; set; }
        public DbSet<EmployeesCredentials> EmployeeCredential { get; set; }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<EmployeesCredentials>().HasKey(c => new { c.CredentialID, c.employeeNum });
        }
        public DbSet<Position> Positions { get; set; }
        public DbSet<Department> Departments { get; set; }
        public DbSet<Location> Locations { get; set; }

    }
}

. net Core -添加脚手架项目“创建DbContext获取模型时出错”

如果项目的实体不包含空构造函数,则出现此错误。EntityFramework需要空构造函数来实例化实体和模式的映射属性。

如果你需要保护实体类,使用受保护的构造函数,例如:

public class Person 
{
    public string Name { get; private set; }
    public Person(string name)
    {
        Name = name;
    }
    protected Person() { }
}