web-dev-qa-db-ja.com

「PropertyName」は、ナビゲーションとして構成されているため、エンティティタイプ 'typename'のプロパティとして使用できません。

次のようにエンティティ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_を実行すると、エラーが発生しています。

「ジェンダー」は、ナビゲーションとして構成されているため、エンティティタイプ 'user'のプロパティとして使用できません。

8

ナビゲーションプロパティにインデックスを作成しようとしていました。代わりに、外部キーのインデックスを作成します。

user.HasIndex(x => x.Gender)user.HasIndex(x => x.GenderId)に変更してください。

1

私は同様のエラーがありました:

ナビゲーションとして構成されているため、エンティティタイプ 'ORDERLINE'のプロパティとして「製品」を使用することはできません。

エラーの原因は、Fluent APIでは、エンティティをプロパティとして使用しました。

modelBuilder.Entity<OrderLine>().Property(ol => ol.Product).IsRequired(true)
 _
1
Mill

[ForeignKey("GenderId")]を使ってpublic virtual Gender Gender { get; set; } 財産 。したがって、GenerIDは関連するユーザーの外部キーとして識別されます。

下記の「最新のコード」を参照してください。

public class User
{
    public int GenderId { get; set; }
    [ForeignKey("Id")]//Gender Primary key
    public virtual Gender Gender { get; set; }
}
 _

あなたの問題を解決することを願っています。

ありがとう、

0
Sunil Kumar