私は現在、アプリケーションユーザーがどの講義を完了したかを表示するテーブルのEntity Framework Coreを使用したコードの最初の移行を作成しようとしています。Entity Frameworkコア "エンティティタイプ 'XXX'は、主キーを定義する必要があります。
public class LectureCompletion
{
[Key, Column(Order = 0)]
[ForeignKey("Lecture")]
public Lecture LectureId { get; set; }
[Key, Column(Order = 1)]
[ForeignKey("User")]
public ApplicationUser UserId{ get; set; }
public bool Completed { get; set; }
}
私はユニークな複合キーとしてUserId
とLectureId
を使用したい:私のモデルは、このようになります。しかし、私はこのエラーが発生します:
The entity type 'LectureCompletion' requires a primary key to be defined.
私は明らかに正しい位置に私の重要な属性を持っているので、これがどうして起こっているのか分かりません。外来/主キーとしてApplicationUser
を使用できますか?
public class Lecture
{
[Key]
public int LectureId { get; set; }
public string ModuleName { get; set; }
public string LectureName { get; set; }
}
そして、私のApplicationDBContext.cs
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<Lecture> Lectures { get; set; }
public DbSet<LectureCompletion> LectureCompletion { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
すごいです!ありがとうございました!それはあなたが提供したリンクを読んでいくつかのことを学びました。ちょうど、外部キーUserIdがintでなく文字列である必要があることを追加したかったのです。 –