为什么 EF Core 将我未修饰的 class 视为一个实体?

Why is EF Core treating my non-decorated class as an entity?

我有一个简单的class如下:

public class NonEntity
{
   // some properties
}

我收到指向 Entity Framework 核心认为这是一个 POCO(实体)class 的运行时错误。例如:

The entity type 'NonEntity' requires a primary key to be defined. If you intended to use a keyless entity type, call 'HasNoKey' in 'OnModelCreating'

但是,在我的数据库上下文中没有 DbSet<NonEntity> 属性,并且 NonEntity class 上没有任何属性可以建议除此以外的任何内容标准 class 与我的数据库无关。什么会导致 EF Core 以不同的方式思考?

原来发生这种情况是因为我在另一个 class 中引用了 class, 一个实体:

public class MyEntity
{
    public int Id { get; set; }

    public List<NonEntity> NonEntities
    {
        get
        {
           // some logic that converts entities to non-entities and returns them
        }
    }
}

NotMapped 属性添加到 属性 定义解决了它:

[NotMapped]
public List<NonEntity> NonEntities

默认情况下,EF 会尝试将属性映射到数据库。 NotMapped 属性覆盖此行为。