使用ASP.NET核心身份與實體框架的核心,我需要在我的應用程序添加不同類型的用戶:不同的用戶類型與ASP.NET 1.1的核心身份和Entity Framework核心
比方說,我需要兩種類型的用戶:「學生」和「老師」;他們都是ApplicationUsers,因爲他們必須通過身份驗證才能訪問應用程序。
我完成了創建兩個表格:一個是學生,一個是老師。這兩個表與ApplicationUser表是一對一的關係。
我想知道這是否正確,或者我做錯了什麼,,因爲當用遷移更新數據庫時,它會在「學生」表中引發錯誤「FOREIGN KEY'FK_Student_AspNetUsers_Id'可能導致週期或多個級聯路徑,指定ON DELETE NO ACTION或UPDATE NO ACTION「。在任何情況下,如果它正確,最後我會有一個ApplicationUser類,它有兩列(一個用於StudentId,另一個用於TeacherId),其中一個將始終爲空,因爲ApplicationUser可以是Student或一位老師,但不是兩個。
這裏是我到目前爲止的代碼:
public class ApplicationUser : IdentityUser<int>
{
public string Name { get; set; }
[ForeignKey("Teacher")]
public int? TeacherId { get; set; }
public virtual Teacher Teacher { get; set; }
[ForeignKey("Student")]
public int? StudentId { get; set; }
public virtual Student Student { get; set; }
}
public class Student
{
[Key, ForeignKey("User")]
public int Id { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string MotherMaidenName { get; set; }
public DateTime BirthDate { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ApplicationUser User { get; set; }
}
public class Teacher
{
[Key,ForeignKey("User")]
public int Id { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string MotherMaidenNAme { get; set; }
public virtual ApplicationUser User { get; set; }
}
修訂:我已經設置TeacherId和StudentId爲空的,因此上面提到的錯誤消失。
我同意你的看法,這不是一個好的設計。我已經爲不同的用戶提供了角色,但是我還需要爲他們每個角色提供不同的屬性,我認爲使用ApplicationUser作爲用戶與商業數據庫中的其餘表相關聯也是一個糟糕的設計。 – MorgoZ
例如,學生有出生日期和入學日期,而老師沒有,老師可以有主題。他們有不同的屬性,所以ApllicationUser不是設置所有用戶的類型屬性的地方。 – MorgoZ
我明白你在想什麼。我編輯了我的答案。 – user743414