“propertyName”不能用作实体类型“typeName”的属性,因为它被配置为导航

Nim*_*hew 14 c# asp.net entity-framework entity-framework-core asp.net-core

我有一个user具有以下内容的实体:

public class User
{
    [Key, Required]
    public int Id { get; set; }
    public int GenderId { get; set; }
    public virtual Gender Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

gender

public class Gender
{
    [Key, Required]
    public int Id { get; set; }
    public virtual ICollection<User> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,在 my 中DbContext,我有:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>(user =>
    {
        user
        .HasOne(x => x.Gender)
        .WithMany(x => x.Users)
        .HasForeignKey(x => x.GenderId);
    }

    user.HasIndex(x => x.Gender);
}
Run Code Online (Sandbox Code Playgroud)

当我运行时dotnet ef add migration User,我收到错误:

“性别”不能用作实体类型“用户”的属性,因为它被配置为导航。

Nim*_*hew 24

我试图在导航属性上创建索引。相反,在外键上创建索引。

更改user.HasIndex(x => x.Gender)user.HasIndex(x => x.GenderId)