C#- Error in DbContext

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kdaic1712
    New Member
    • Jun 2021
    • 2

    C#- Error in DbContext

    I work at Blazor (C #) Server- Side. I am trying to save data to a database when registering a user (when I press the register button), but the following error occurs:
    System.NullRefe renceException: 'The object reference is not set on the object instance.' <> 4__this._dataCo ntext.

    I read on the Internet about that mistake, but I couldn't figure out what the problem was with me.

    Find the code snippets below:

    Register.razor:

    Code:
    @page "/register"
    
    @using TestBlazor.Models
    @using TestBlazor.Data
    
    @*@inject IToDoListService user*@
    
    <br />
    <br />
    
    <h3><b>Register</b></h3>
    <br />
    
    <EditForm class="needs-validation" Model="@_user" OnValidSubmit="@HandleValidSubmit" OnInvalidSubmit="@HandleInvalidSubmit">
        <div class="alert @StatusClass">@StatusMessage</div>
        <DataAnnotationsValidator />
        <ValidationSummary />
        <div class="form-group">
            <p><b>User name</b></p>
            <input id="username" class="solid" name="username" placeholder="Your username.." @bind-value="_user.UserName" />
            <ValidationMessage For="@(() => @_user.UserName)"></ValidationMessage>
        </div>
        <div class="form-group">
            <p><b>Password</b></p>
            <input type="password" class="solid" id="password" placeholder="Your password.." @bind-value="_user.Password" />
            <ValidationMessage For="@(() => @_user.Password)"></ValidationMessage>
        </div>
        <div class="form-group">
            <p><b>Email</b></p>
            <input id="email" class="solid" placeholder="[email protected]" @bind-value="_user.Email" />
            <ValidationMessage For="@(() => @_user.Email)"></ValidationMessage>
        </div>
        <div class="form-group">
            <p><b>Company</b></p>
            <input id="company" class="solid" placeholder="Your company.." @bind-value="_user.Company" />
            <ValidationMessage For="@(() => @_user.Company)"></ValidationMessage>
        </div>
    
    
        <br />
    
        <button disabled="@loading" class="btn btn-primary" onclick="AddUser">
    
            @if (loading)
            {
                <span class="spinner-border spinner-border-sm mr-1"></span>
                <NavLink href="/login" class="btn btn-link">Register</NavLink>
            }
            Register
        </button>
        <NavLink href="/login" class="btn btn-link">Login</NavLink>
    </EditForm>
    
    
    
    @code {
    private User _user = new User();
    
    private string StatusMessage;
    private string StatusClass;
    
    private bool loading;
    private readonly AppDbContext _dataContext;
    
    
    private void OnValidSubmit()
    {
        if (loading == true)
        {
            Console.WriteLine("You have successfully registered!");
        }
    
        else
        {
            loading = false;
            Console.WriteLine("Check your information again!");
        }
    }
    
    //protected void HandleValidSubmit()
    //{
    //    StatusClass = "alert-info";
    //    StatusMessage = " You have successfully registered! Please click the Login button to log in!";
    
    @*}*@
    
    
    private async void HandleValidSubmit()
    {
        try
        {
            _dataContext.User.Add(_user); //error in this record System.NullReferenceException: 'Object reference not set to an instance of an object.' <> 4__this._dataContext was null.
    
            await _dataContext.SaveChangesAsync();
            }
            catch
            {
                base.StateHasChanged();
            }
            _user = new User();
            base.StateHasChanged();
            }
    
            
            protected void HandleInvalidSubmit()
            {
            StatusClass = "alert-danger";
            StatusMessage = " Check your information again!";
            }
    
    
            //public bool doesCompanyExist(string Company)
            //{
            //    try
            //    {
    
            //        if (Company != null)
            //        {
            //            return true;
            //        }
    
            //    }
            //    catch (Exception)
            //    {
            //        return false;
            //    }
    
            //    return false;
    
            //}
    
            }
    User.cs:

    Code:
    [Table("Users")]
        public class User
    
        {
    
            [Display(AutoGenerateField = false)]
            public int UserId { get; set; }
    
            [Display(Name = "UserName")]
            [Required(ErrorMessage = "UserName is required.")]
            public string UserName { get; set; }
    
            [Display(Name = "Password")]
            [Required]
            [MinLength(8, ErrorMessage = "password must be atleast 8 characters")]
            [DataType(DataType.Password)]
            public string Password { get; set; }
    
            [Display(Name = "Email")]
            [Required(ErrorMessage = "Email is required.")]
            public string Email { get; set; }
    
            [Display(Name = "Company")]
            [StringLength(255)]
            [Required(ErrorMessage = "Company is required.")]
            [Remote("doesCompanyExist", "Company", HttpMethod = "POST", ErrorMessage = "Company already exists. Please enter a different company.")]
            public string Company { get; set; }
    
            public User GetRegisteredUser()
            {
                return new User
                {
                    UserName = UserName,
                    Password = Password,
                    Email = Email,
                    Company = Company,
    
                };
            }
    
        }
    AppDbContext.cs :

    Code:
    public class AppDbContext : DbContext
        {
            public AppDbContext()
            {
    
            }
    
            public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
            {
            }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                if (!optionsBuilder.IsConfigured)
                {
                    optionsBuilder.UseSqlServer("Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=testblazor;Integrated Security=True;");
                }
            }
    
            //protected override void OnModelCreating(ModelBuilder modelBuilder)
            //{
            //    base.OnModelCreating(modelBuilder);
            //    modelBuilder.Entity<User>()
            //}
    
            public DbSet<User> User { get; set; }
            public DbSet<Item> Items { get; set; }
    
    
        }
  • akhilc2005
    New Member
    • Aug 2021
    • 2

    #2
    where is _dataContext objct getting initialized? I do not see it anywhere hence you are getting object reference error since its not initialized.

    Befiore calling this you need to initailize.

    Comment

    Working...