. 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; }
}
}
如果项目的实体不包含空构造函数,则出现此错误。EntityFramework需要空构造函数来实例化实体和模式的映射属性。
如果你需要保护实体类,使用受保护的构造函数,例如:
public class Person
{
public string Name { get; private set; }
public Person(string name)
{
Name = name;
}
protected Person() { }
}