EF代码优先用户认证系统

本文关键字:认证 系统 用户 代码 EF | 更新日期: 2023-09-27 18:14:38

我有一个User实体在我的DbContext。我想要的是,用户应该能够给参考/留下评论彼此,因此我创建了参考实体。

public class Reference
{
    public virtual User By { get; set; } // user who leaves a reference
    public virtual User To { get; set; } // user who has given a reference
    public string Opinions { get; set; }
}

用户实体

public virtual ICollection<Reference> ReferencedTo { get; set; } // collection of references that user has given
public virtual ICollection<Reference> ReferencedBy { get; set; } // collection of references that user has been given

我应该怎么做才能使它与dataannations或FluentAPI一起工作,或者你会如何处理和解决这个问题?

EF代码优先用户认证系统

您需要这样做:

public class Reference
{
    public int ReferenceId { get; set; }
    public int ByUserId { get; set; }
    public virtual User By { get; set; } // user who leaves a reference
    public int ToUserId { get; set; }
    public virtual User To { get; set; } // user who has given a reference
    public string Opinions { get; set; }
}
public class User
{
    public int UserId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Reference> ReferencedTo { get; set; } // collection of references that user has given
    public virtual ICollection<Reference> ReferencedBy { get; set; } // collection of references that user has been given
}
public class MyContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Reference> References { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Reference>()
            .HasRequired(x => x.By)
            .WithMany(x => x.ReferencedBy)
            .HasForeignKey(x => x.ByUserId)
            .WillCascadeOnDelete(false);
        modelBuilder.Entity<Reference>()
            .HasRequired(x => x.To)
            .WithMany(x => x.ReferencedTo)
            .HasForeignKey(x => x.ToUserId)
            .WillCascadeOnDelete(false);
    }
}