Sql ';无法为';创建数据库查询';因为它不是查询类型。使用DbContext.Set方法来创建DbSet;
我创建了一个实体Sql ';无法为';创建数据库查询';因为它不是查询类型。使用DbContext.Set方法来创建DbSet;,sql,entity-framework,ef-code-first,entity-framework-core,ef-core-2.2,Sql,Entity Framework,Ef Code First,Entity Framework Core,Ef Core 2.2,我创建了一个实体 protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<MyEntity>().HasKey(c => c.Id); // ... other setup } 模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder) { modelBuilder.Entity
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>().HasKey(c => c.Id);
// ... other setup
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(c=>c.Id);
//…其他设置
}
当我尝试查询时
dbContext.Query<MyEntity>()
dbContext.Query()
我有个例外
无法为“MyEntity”创建DbQuery,因为它不是查询类型。
改为使用DbContext.Set方法创建DbSet
根据我的理解,在EF Core中,“实体”与“可以查询的实体”不同
我试着加进去
modelBuilder.Entity<MyEntity>().HasKey(c => c.Id);
modelBuilder.Query<MyEntity>();
modelBuilder.Entity().HasKey(c=>c.Id);
modelBuilder.Query();
但是我得到了错误
无法将实体类型“MyEntity”添加到模型中,因为
已存在同名的查询类型
当我创建新迁移时
那么,我是否必须在MyEntity上创建一个包装器,并将其添加为查询?我是否需要为每个实体进行此练习?我的想法是设计一个不同的阅读模式吗?请帮助我。错误消息告诉您要做什么-使用
Set
方法而不是Query
,例如dbContext.Set()
。虽然返回的DbSet
可以用于其他操作,但它实现了IQueryable
,即是读取(和查询)实体(数据库表)的基础。错误消息告诉您要做什么-使用Set
方法而不是Query
,例如dbContext.Set()
。虽然返回的DbSet
可以用于其他操作,但它实现了IQueryable
,即是读取(和查询)实体(数据库表)的基础。