代码生成器错误:DbContext上没有实体类型

时间:2016-06-10 07:53:39

标签: c# entity-framework asp.net-core

我想创建简单的ASP.NET核心应用程序。但是,当我尝试为我的模型生成API控制器时,我收到以下错误: (屏幕截图显示了模型类和数据库上下文的代码,下面是EntityBase类的代码)

Setting up code scaffolding properties

Error

public abstract class EntityBase
{
    [Key]
    public int Id { get; set; }
    public DateTime Modified { get; set; }
    public DateTime Created { get; set; }

    public EntityBase()
    {
        Created = DateTime.Now;
        Modified = Created;
    }
}

4 个答案:

答案 0 :(得分:1)

与所提到的标题有同样的问题,但没有任何关键或关系问题,我终于找到了解决这个问题的方法。特别是使用由数据库优先方法创建的模型类的脚手架控制器/视图。在你的DbContext类中,你必须带有DbContextOptions<MyDb>参数的类构造函数,由于某种原因,它不会在软件包管理器控制台中添加'Scaffold-DbContext'命令(带有一个ASPNETCORE项目)

public partial class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }
    public virtual DbSet<MyModel> MyModel { get; set; }
}

对于其他人,appsettings.json文件中需要连接字符串,并且startup.cs文件的ConfigureServies方法中的以下代码添加:

se‌​rvices.AddDbContext<‌​MyDbContext>(opt‌​ions => options.UseSqlServer(Configuration.GetConnectionString("MyDbContection")));

答案 1 :(得分:0)

好的,所以我发现导致此错误的原因。我在没有使用第三类的情况下创建了Convent和Group之间的多对多关系。我曾经使用流畅的api来做到这一点。

谢谢大家的帮助!

答案 2 :(得分:0)

当没有多对多关系且类中没有PRIMARY KEY时,添加[Key]属性可以解决问题

答案 3 :(得分:-1)

就我而言,原因是在dbContext.Database.Migrate()内调用Startup.Configure()。我删除它时错误消失了。