【发布时间】:2017-10-01 09:19:53
【问题描述】:
注意:对于这个问题,我稍微简化了模型。
我正在开发一个 ASP.NET Core MVC 应用程序(使用 Entity Framework Core)。我有三个模型。我有一个ApplicationUser(从IdentityUser 扩展而来),我有一个Activity 模型,我有一个'SignUp' 模型,它有一个活动的外键和一个ApplicationUser 的外键。至少,是这样的想法。问题是,Entity Framework 将 Activity FK 识别为 FK,但不是 applicationuser。这只是成为数据库中的另一个 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; }
}
注册:
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 则不行。 Entity Framework 只是在没有任何 FK 约束的情况下在数据库中生成一个 int,并且在搭建 CRUD 页面时,它也不会被识别为 FK。
我对 ASP.net MVC 和 EF 还很陌生,我觉得我忽略了一些非常简单的东西。 Facepalm 时刻即将到来?
谢谢!
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework foreign-keys