因此,我目前正在嘗試使用實體框架核心爲表格顯示應用程序用戶已完成哪些演講,並首次創建代碼。我的模型是這樣的:實體框架核心「實體類型'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
作爲外鍵/主鍵?
這裏是我的Lecture
型號:
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。 –