注意:对于这个问题,我稍微简化了模型。
我正在开发 ASP.NET Core MVC 应用程序(使用 Entity Framework Core)。我有三个模型。我有一个 ApplicationUser (从 IdentityUser 扩展),我有一个 Activity 模型,我有一个“SignUp”模型,该模型具有活动的外键和 ApplicationUser 的外键。至少,这是我的想法。问题是,实体框架将 Activity FK 识别为 FK,但不将应用程序用户识别为 FK。这只是成为数据库中的另一个 int,没有任何 FK 约束。
我尝试了很多在互联网上找到的东西,但我无法让它工作。这是我目前所拥有的(为了清晰起见缩短了):
活动:
public class Activity
{
public Activity()
{
SignUps = new HashSet<SignUp>();
}
public int ActivityID { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Naam")]
public string Name { get; set; }
public virtual ICollection<SignUp> SignUps { get; set; }
}
应用用户:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
Activities = new HashSet<Activity>();
}
[Required]
[Display(Name = "Voornaam")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Achternaam")]
public string LastName { get; set; }
public virtual ICollection<Activity> Activities { get; set; }
}
SignUp:
public class SignUp
{
public int SignUpID { get; set; }
[Required]
public int ActivityID { get; set; }
[ForeignKey("ApplicationUser")]
public int ApplicationUserID { get; set; }
[Required]
public string Status { get; set; }
}
注意:我首先没有 [ForeignKey] 属性(就像活动一样),但它在那里是因为我试图让它工作。
正如我上面所说,SignUp 中的 Activity FK 工作正常,而 Applicationuser FK 则不行。实体框架只是在数据库中生成一个 int,没有任何 FK 约束,并且在构建 CRUD 页面时,它也不会被识别为 FK。
我对 ASP.net MVC 和 EF 很陌生,我感觉我忽略了一些非常简单的东西。捂脸瞬间来了?
Thanks!