带有ASP.NET Core 1.1身份和实体框架核心的不同用户类型



使用实体框架核心使用ASP.NET核心身份,我需要在应用中添加不同类型的用户:

假设我需要两种用户:"学生"one_answers"老师";他们两个也是应用程序器,因为必须对其进行身份验证才能访问应用程序。

我已经完成了这两个表:一张桌子:一张桌子,一个用于老师。这两个表都是与Applicationuser表一对一相关的。

我想知道这是正确的还是我做错了什么,,因为在使用迁移的数据库更新数据库时会引发错误" forefer"'frk_student_aspnetusers_id in'student''表中的表格可能会导致周期或多个级联路径。在删除无操作或更新操作上指定" "。而且,无论如何,如果它正确,最后我将拥有一个带有两个列的应用程序服务器类(一个用于StudentId,另一个用于教师ID),其中一个始终将是无效的,因为应用程序使用者可以是学生或老师,但不是两者。

这是我到目前为止的代码:

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; }
}

更新了:我已经将Cholestid和StudentId设置为无效,因此上面提到的错误已经消失了。

您不应为拥有的每个用户类型创建不同的表。您应该创建角色并将该角色分配给用户。例如,创建一个角色学生和一个角色老师,并将他们分配给您的需求。

所以我会说你所做的不是一个好设计。

当您需要为学生/老师节省其他值时,我会做与您的设计类似的事情。但是我不会将我的学生/老师的ID添加到我的Applicationuser课程中。我只需在我的学生/老师课上添加一个用户ID。因此,设计问题应该是您正在尝试将这些内容放入应用程序级别的类别。

相关内容

  • 没有找到相关文章

最新更新