【发布时间】:2020-02-27 18:18:26
【问题描述】:
我有一个实体user,具有以下内容:
public class User
{
[Key, Required]
public int Id { get; set; }
public int GenderId { get; set; }
public virtual Gender Gender { get; set; }
}
在gender:
public class Gender
{
[Key, Required]
public int Id { get; set; }
public virtual ICollection<User> Users { get; set; }
}
然后,在我的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);
}
当我运行 dotnet ef add migration User 时,我收到了错误:
“性别”不能用作实体类型“用户”的属性,因为它 配置为导航。
【问题讨论】:
-
错误不能来自所示的型号和配置。您的真实代码中必须有其他内容,例如
.Property(x => x.Gender)或类似内容。 -
对不起。我错过了在实际导致问题的问题中添加一点代码。
user.HasIndex(x => x.Gender);我试图在导航属性上创建索引。我不得不把它改成user.HasIndex(x => x.GenderId);
标签: c# asp.net entity-framework asp.net-core entity-framework-core