首页 > 解决方案 > '无法为 '...' 创建 DbQuery,因为它不是查询类型。改用 DbContext.Set 方法创建 DbSet。

问题描述

我有一个我创建的实体

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MyEntity>().HasKey(c => c.Id);
        // ... other setup
    }

当我尝试查询时

dbContext.Query<MyEntity>()

我得到了例外

无法为“MyEntity”创建 DbQuery,因为它不是查询类型。改用 DbContext.Set 方法创建 DbSet

据我了解,在 EF Core 中,“实体”与“您可以查询的实体”不同。

我尝试添加

        modelBuilder.Entity<MyEntity>().HasKey(c => c.Id);
        modelBuilder.Query<MyEntity>();

但后来我得到了错误

无法将实体类型“MyEntity”添加到模型中,因为已存在同名的查询类型。

当我创建一个新的迁移时。

那么我是否必须创建一个包装器MyEntity并将其添加为查询?我是否必须对每个实体都进行此练习?我的想法是设计不同的读取模型吗?帮帮我。

标签: sqlentity-frameworkef-code-firstentity-framework-coreef-core-2.2

解决方案


推荐阅读