2021年3月24日星期三

How to get users (Students) from SQL server database by asp.net core signalR?

I need to get all the Students from the database and return List inside signalR Hub class, but every time I get null instead of that list and don't know why, I tried many ways to get that list but none of them worked, Can anyone help me please ;( I'm using asp net core, and I have debugged my application every things works fine but I get NULL instead of the list

namespace Student_Training.SignalR  {    [Authorize]  public class ChatHub : Hub  {  private readonly TrainingDbContext _context;  private readonly UserManager<IdentityUser> _userManager;  private readonly ApplicationDbContext _Identitycontext;                 public ChatHub(TrainingDbContext context, UserManager<IdentityUser> userManager, ApplicationDbContext Identitycontext)      {          _context = context;          _userManager = userManager;          _Identitycontext = Identitycontext;      }              public override Task OnConnectedAsync()      {          Clients.All.SendAsync("BroadcastConnections", LstAllConnections);          ConnectedUser.Ids.Add(Context.ConnectionId);          return base.OnConnectedAsync();      }      public override Task OnDisconnectedAsync(Exception exception)      {          ConnectedUser.Ids.Remove(Context.ConnectionId);          return base.OnDisconnectedAsync(exception);      }              public async Task GetUsersToChat()      {          // Here we bring list of users                    // First Way          var students  = await _context.Student.Include(s => s.AcademicSupervisor).Include(s => s.Faculty).Include(s => s.Major).Include(s => s.OrganizationSupervisor).ToListAsync();            // Second Way by Service          List<Student> users = new UsersListService().GetUsersToChat();            await Clients.All.SendAsync("BroadcastUsersToChat", students);      }        }  

}

THIS IS THE UsersListService:

namespace Student_Training.Services   {      public class UsersListService      {        private readonly TrainingDbContext _context;      private readonly UserManager<IdentityUser> _userManager;      private readonly ApplicationDbContext _Identitycontext;        public UsersListService()      {          _context = new TrainingDbContext();      }      // or list of identity user      public List<Student> GetUsersToChat()      {          var students = _context.Student.Include(s => s.AcademicSupervisor).Include(s => s.Faculty).Include(s => s.Major).Include(s => s.OrganizationSupervisor);          List<Student> studentslist = students.ToList();                    return studentslist;      }  }  

}

THIS IS THE IDENTITY DbContext for users Accounts (UserId, Email, Passwords)

namespace Student_Training.Data  {      public class ApplicationDbContext : IdentityDbContext  {      public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)          : base(options)      {      }  }  }  

THIS IS THE DbContext that contains STUDENT table:

    namespace Student_Training.Data      {      public partial class TrainingDbContext : DbContext  {      public TrainingDbContext()      {      }        public TrainingDbContext(DbContextOptions<TrainingDbContext> options)          : base(options)      {      }        public virtual DbSet<AcademicSupervisor> AcademicSupervisor { get; set; }      public virtual DbSet<Faculty> Faculty { get; set; }           public virtual DbSet<Major> Major { get; set; }      public virtual DbSet<OrganizationSupervisor> OrganizationSupervisor { get; set; }        public virtual DbSet<Student> Student { get; set; }        public virtual DbSet<TrainingAdministrator> TrainingAdministrator { get; set; }      public virtual DbSet<Message> Message { get; set; }        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)      {          if (!optionsBuilder.IsConfigured)          {                optionsBuilder.UseSqlServer("my-connection-string");          }      }        protected override void OnModelCreating(ModelBuilder modelBuilder)      {          modelBuilder.Entity<AcademicSupervisor>(entity =>          {              entity.HasIndex(e => e.Email)                  .HasName("IX_AcademicSupervisorEmail")                  .IsUnique();                entity.HasIndex(e => e.PhoneNumber)                  .HasName("IX_AcademicSupervisorPhoneNumber")                  .IsUnique();                entity.HasOne(d => d.Faculty)                  .WithMany(p => p.AcademicSupervisor)                  .HasForeignKey(d => d.FacultyId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_AcademicSupervisor_Faculty");          });                        modelBuilder.Entity<OrganizationSupervisor>(entity =>          {              entity.HasIndex(e => e.Email)                  .HasName("IX_OrganizationSupervisorEmail")                  .IsUnique();                entity.HasIndex(e => e.PhoneNumber)                  .HasName("IX_OrganizationSupervisorPhoneNumber")                  .IsUnique();          });            modelBuilder.Entity<Student>(entity =>          {              entity.HasIndex(e => e.Email)                  .HasName("IX_StudentEmail")                  .IsUnique();                entity.HasIndex(e => e.PhoneNumber)                  .HasName("IX_StudentPhoneNumber")                  .IsUnique();                entity.HasOne(d => d.AcademicSupervisor)                  .WithMany(p => p.Student)                  .HasForeignKey(d => d.AcademicSupervisorId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Student_AcademicSupervisor");                entity.HasOne(d => d.Faculty)                  .WithMany(p => p.Student)                  .HasForeignKey(d => d.FacultyId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Student_Faculty");                entity.HasOne(d => d.Major)                  .WithMany(p => p.Student)                  .HasForeignKey(d => d.MajorId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Student_Major");                entity.HasOne(d => d.OrganizationSupervisor)                  .WithMany(p => p.Student)                  .HasForeignKey(d => d.OrganizationSupervisorId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Student_OrganizationSupervisor");          });            modelBuilder.Entity<TrainingAdministrator>(entity =>          {              entity.HasKey(e => e.AdministratorId)                  .HasName("PK_TrainingAdminstrator");                entity.HasIndex(e => e.Email)                  .HasName("IX_TrainingAdministratorEmail")                  .IsUnique();                entity.HasIndex(e => e.PhoneNumber)                  .HasName("IX_TrainingAdministratorPhoneNumber")                  .IsUnique();                entity.HasOne(d => d.Faculty)                  .WithMany(p => p.TrainingAdministrator)                  .HasForeignKey(d => d.FacultyId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_TrainingAdminstrator_Faculty");          });          modelBuilder.Entity<Message>(entity =>          {              entity.Property(e => e.MsgId).ValueGeneratedNever();                entity.HasOne(d => d.AcaSender)                  .WithMany(p => p.Message)                  .HasForeignKey(d => d.UserId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Message_AcademicSupervisor");                entity.HasOne(d => d.AdminSender)                  .WithMany(p => p.Message)                  .HasForeignKey(d => d.UserId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Message_TrainingAdminstrator");                entity.HasOne(d => d.StudentSender)                  .WithMany(p => p.Message)                  .HasForeignKey(d => d.UserId)                  .OnDelete(DeleteBehavior.ClientSetNull)                  .HasConstraintName("FK_Message_Student");          });            OnModelCreatingPartial(modelBuilder);      }        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);  }  }  

THE STARTUP CLASS:

namespace Student_Training  {       public class Startup      {          public Startup(IConfiguration configuration)      {          Configuration = configuration;      }        public IConfiguration Configuration { get; }            public void ConfigureServices(IServiceCollection services)      {          services.AddDbContext<ApplicationDbContext>(options =>              options.UseSqlServer(                  Configuration.GetConnectionString("DefaultConnection")));              services.AddIdentity<IdentityUser, IdentityRole>()          .AddDefaultTokenProviders()          .AddDefaultUI()          .AddEntityFrameworkStores<ApplicationDbContext>();                          services.Configure<IdentityOptions>(options =>          {                            options.Password.RequireDigit = true;              options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);              options.User.RequireUniqueEmail = true;          });            services.ConfigureApplicationCookie(options =>          {              options.Cookie.HttpOnly = true;              options.ExpireTimeSpan = TimeSpan.FromMinutes(5);                options.LoginPath = "/Identity/Account/Login";              options.AccessDeniedPath = "/Identity/Account/AccessDenied";              options.SlidingExpiration = true;          });            services.AddControllersWithViews();          services.AddRazorPages(options =>          {              options.Conventions.AuthorizePage("/Students/StudentInfo/");              options.Conventions.AuthorizeFolder("/Private");          });                    services.AddDbContext<TrainingDbContext>(options =>          {              options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection2"));              options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);          });                                     services.AddAuthorization(options =>          {              options.FallbackPolicy = new AuthorizationPolicyBuilder()                  .RequireAuthenticatedUser()                  .Build();          });                   services.AddSignalR();      }             public void Configure(IApplicationBuilder app, IWebHostEnvironment env)      {          if (env.IsDevelopment())          {              app.UseDeveloperExceptionPage();              app.UseDatabaseErrorPage();          }          else          {              app.UseExceptionHandler("/Home/Error");                           app.UseHsts();          }          app.UseHttpsRedirection();          app.UseStaticFiles();            app.UseRouting();            app.UseAuthentication();           app.UseAuthorization();            app.UseEndpoints(endpoints =>          {              endpoints.MapControllerRoute(                  name: "default",                  pattern: "{controller=Home}/{action=Index}/{id?}");              endpoints.MapRazorPages();              endpoints.MapHub<ChatHub>("/chatHub");          });      }  }  }  
https://stackoverflow.com/questions/66775207/how-to-get-users-students-from-sql-server-database-by-asp-net-core-signalr March 24, 2021 at 01:25PM

没有评论:

发表评论