[英]Entity Framework 5, Code First Many to Many foreign key mapping with extra property
我有這些課
public class SecretQuestion
{
[Key]
public int SecretQuestionId { get; set; }
[Required]
public string Caption { get; set; }
}
public class UserSecretQuestion
{
public SecretQuestion SecretQuestion { get; set; }
public User User { get; set; }
[Required]
public string Answer { get; set; }
}
public class User
{
[Key]
public int UserId { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
}
我希望 UserSecretQuestion 成為保存用戶答案的連接表。 問題是 EF5 不會為我創建這個表,因為它聲稱我需要該表上的一個鍵。
所以當然把public int Id { get; 放; }在那里將修復它,但是這使我沒有在我的數據庫需要的字段。
有沒有辦法讓它正常工作,以便 secretquestionid 和 userid 外鍵形成 usersecretquestion 表的復合鍵。
我注意到這里有幾個問題討論了多對多關系,但沒有一個(我可以找到)討論實體具有額外數據的這種關系,例如“答案”。
首先,您必須將SecretQuestionId
和UserId
作為屬性添加到UserSecretQuestion
類中。
public class UserSecretQuestion
{
[Key, ForeignKey("SecretQuestion")]
public int SecretQuestionId { get; set; }
[Key, ForeignKey("User")]
public int UserId { get; set; }
[Required]
public string Answer { get; set; }
public SecretQuestion SecretQuestion { get; set; }
public User User { get; set; }
}
然后,您必須覆蓋DbContext
類中的OnModelCreating
方法,並告訴實體框架對連接表使用復合鍵。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Set composite keys
modelBuilder.Entity<UserSecretQuestion>().HasKey(k => new { k.SecretQuestionId, k.UserID });
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.