注意:對於這個問題,我簡化了一下模型。實體框架不生成ApplicationUser外鍵
我正在使用ASP.NET Core MVC應用程序(使用Entity Framework Core)。我有三個模型。我有一個ApplicationUser(從IdentityUser擴展而來),我有一個Activity模型,我有一個'SignUp'模型,它具有一個活動的外鍵和一個ApplicationUser的外鍵。至少,這是主意。事情是,實體框架將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; }
}
ApplicationUser:
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沒有。實體框架只是在數據庫中生成一個沒有任何FK限制的int,並且在腳手架CRUD頁面時,它也不會被識別爲FK。
我對ASP.net MVC和EF相當陌生,我感覺我忽略了一些非常簡單的東西。 Facepalm時刻來臨?
謝謝!
哦,上帝,這是我已經期待的facepalm時刻......我忽略了大概幾個小時內的Acitivity而不是SignUp。好的,如果你看的時間太長,你有時會開始懷念。謝了哥們!我感謝您的幫助 :) – Landcross