我想创建简单的ASP.NET核心应用程序。但是,当我尝试为我的模型生成API控制器时,我收到以下错误: (屏幕截图显示了模型类和数据库上下文的代码,下面是EntityBase类的代码)
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;
}
}
答案 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方法中的以下代码添加:
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MyDbContection")));
答案 1 :(得分:0)
好的,所以我发现导致此错误的原因。我在没有使用第三类的情况下创建了Convent和Group之间的多对多关系。我曾经使用流畅的api来做到这一点。
谢谢大家的帮助!
答案 2 :(得分:0)
当没有多对多关系且类中没有PRIMARY KEY时,添加[Key]
属性可以解决问题
答案 3 :(得分:-1)
就我而言,原因是在dbContext.Database.Migrate()
内调用Startup.Configure()
。我删除它时错误消失了。