次のようにエンティティ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'のプロパティとして使用できません。
ナビゲーションプロパティにインデックスを作成しようとしていました。代わりに、外部キーのインデックスを作成します。
user.HasIndex(x => x.Gender)
をuser.HasIndex(x => x.GenderId)
に変更してください。
私は同様のエラーがありました:
ナビゲーションとして構成されているため、エンティティタイプ 'ORDERLINE'のプロパティとして「製品」を使用することはできません。
エラーの原因は、Fluent APIでは、エンティティをプロパティとして使用しました。
modelBuilder.Entity<OrderLine>().Property(ol => ol.Product).IsRequired(true)
_
[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; }
}
_
あなたの問題を解決することを願っています。
ありがとう、