skip to Main Content

I have a project it’s about real estate so I created tables user and linked it with estates, and I learnt about identity.

When I migrate it hides the user table because the ASP.NET Core identity already has a users table, so how can I link asp.net user to users or how to link asp.net user to identity user

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace Try.DAL.Entity
{
        [Table("Users")]
    public class Users
    {
        [Key]
        public int Id { get; set; }

        [StringLength(50)]
        public string Fname { get; set; }
        [StringLength(50)]
        public string Lname { get; set; }

        public string Email { get; set; }
        public string Password { get; set; }
        [StringLength(20)]
        public string Phone { get; set; }
        public DateTime Signupdate { get; set; }

        public int Usergroupid { get; set; }
        [ForeignKey("Usergroupid")]
        public UserGroup Usergroup { get; set; }
        public virtual ICollection<Estate> Estate { get; set; }
   

    }
}




 
using Microsoft.EntityFrameworkCore;
using Try.DAL.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Try.Models;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
//using Try.Models;

namespace Try.DAL.Database
{
    public class DbContainer : IdentityDbContext
    {
        public DbContainer(DbContextOptions<DbContainer> opts) : base(opts) { }
        public virtual DbSet<RefreshToken> RefreshTokens { get; set; }
        public DbSet<Users> Users { get; set; }
        public DbSet<Ads> Ads { get; set; }
        public DbSet<Clients> Clients { get; set; }
        public DbSet<Feedback> Feedback { get; set; }
        public DbSet<Interests> Interests { get; set; }
        public DbSet<Orders> Orders { get; set; }
        public DbSet<Estate> Estate { get; set; }
        public DbSet<users> users{ get; set; }



   

2

Answers


  1. You have to add the fields you want to add to the identity users table in the applicationDbContext.cs file like this:

    namespace Try.DAL.Database
    {
        // You add this class here with custom fields.
        public class ApplicationUser : IdentityUser
        {
            // add properties here.
            [StringLength(50)]
            public string Fname { get; set; }
            [StringLength(50)]
            public string Lname { get; set; }
    
            public string Email { get; set; }
            public string Password { get; set; }
            [StringLength(20)]
            public string Phone { get; set; }
            public DateTime Signupdate { get; set; }
    
            public int Usergroupid { get; set; }
            [ForeignKey("Usergroupid")]
            public UserGroup Usergroup { get; set; }
            public virtual ICollection<Estate> Estate { get; set; }
        }
    
        public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
        {
            public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
                : base(options)
            {
            }
            public DbSet<Users> Users { get; set; }
            public DbSet<Ads> Ads { get; set; }
            public DbSet<Clients> Clients { get; set; }
            public DbSet<Feedback> Feedback { get; set; }
            public DbSet<Interests> Interests { get; set; }
            public DbSet<Orders> Orders { get; set; }
            public DbSet<Estate> Estate { get; set; }
        }
    }
    
    Login or Signup to reply.
  2. Modify your Dbcontext class as below:

    public class UserTestDbContext : IdentityDbContext
    
    {
        public UserTestDbContext(DbContextOptions<UserTestDbContext> options)
            : base(options)
        {
        }
    
        public DbSet<_3._7.Models.User> User { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<User>().ToTable("User");
        }
    }
    

    And I have simpfied the class as below:

    public class User:IdentityUser

    {
        public int Id { get; set; }
        public string Name { get; set; }
       
        public string Password { get; set; }
      }
    

    Result:
    The migration class:
    migration
    and the database:

    DB1
    DB2

    And if you modify the dbcontext class as follow:

    public class UserTestDbContext : IdentityDbContext<User>
    {
        public UserTestDbContext(DbContextOptions<UserTestDbContext> options)
            : base(options)
        {
        }
    
        public DbSet<_3._7.Models.User> User { get; set; }    
    }
    

    You could find the properties of user class has been added to the ASPNetUser Table.
    enter image description here

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search