Update method - Value cannot be null. (Parameter 'entity') error 500

Posted by: cedilla-gondola.0a on 27 September 2022, 10:13 pm EST

    • Post Options:
    • Link

    Posted 27 September 2022, 10:13 pm EST

    I test my app by postman:

    statuscode:500

    messsage: Value cannot be null. (Parameter ‘entity’)

    details: at Microsoft.EntityFrameworkCore.Utilities.Check.NotNull[T](T value, String parameterName)\r\n at Microsoft.EntityFrameworkCore.DbContext.Entry[TEntity](TEntity entity)\r\n at API.Data.UserRepository.Update(AppUser user) in C:\Users\vu227\DatingApp\API\Data\UserRepository.cs:line 67\r\n at API.Controllers.UsersController.UpdateUser(MemberUpdateDto memberUpdateDto) in C:\Users\vu227\DatingApp\API\Controllers\UsersController.cs:line 51\r\n at lambda_method101(Closure , Object )\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object arguments)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n— End of stack trace from previous location —\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\r\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\r\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\r\n at API.Middleware.ExceptionMiddleware.InvokeAsync(HttpContext context) in C:\Users\vu227\DatingApp\API\Middleware\ExceptionMiddleware.cs:line 29"

    AppUser

    using System;

    using System.Collections.Generic;

    using API.Extensions;

    namespace API.Entities

    {

    public class AppUser

    {

    public int Id { get; set; }

    public string UserName { get; set; }

    public byte PasswordHash { get; set; }

    public byte PasswordSalt { get; set; }

    public DateTime DateOfBirth { get; set; }

    public string KnownAs { get; set; }

    public DateTime Created { get; set; } = DateTime.Now;

    public DateTime LastActive { get; set; } = DateTime.Now;

    public string Gender { get; set; }

    public string Introduction { get; set; }

    public string LookingFor { get; set; }

    public string Interests { get; set; }

    public string City { get; set; }

    public string Country { get; set; }

    public ICollection Photos { get; set; }

    }

    }

    public void Update(AppUser user)

    {

    _context.Entry(user).State = EntityState.Modified;

    }

    line 67 in UserRepostory is

    _context.Entry(user).State = EntityState.Modified;

    Controller Put method looks like:

    [HttpPut]

    public async Task UpdateUser(MemberUpdateDto memberUpdateDto)

    {

    var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;

    var username = claimsIdentity.Name;

    var user = await _userRepository.GetUserByUsernameAsync(username);

        _mapper.Map(memberUpdateDto, user);
    
        _userRepository.Update(user);
    
        if (await _userRepository.SaveAllAsync()) return NoContent();
    
        return BadRequest("Failed to update user");
    }
    

    Line 51 is

    _userRepository.Update(user);

    MemberUpdateDto:

    namespace API.DTOs

    {

    public class MemberUpdateDto

    {

    public string Introduction { get; set; }

    public string LookingFor { get; set; }

    public string Interests { get; set; }

    public string City { get; set; }

    public string Country { get; set; }

     }
    

    }

    Mapper:

    public class AutoMapperProfiles : Profile

    {

    public AutoMapperProfiles()

    {

    CreateMap<AppUser, MemberDto>()

    .ForMember(dest => dest.PhotoUrl, opt => opt.MapFrom(src =>

    src.Photos.FirstOrDefault(x => x.IsMain).Url))

    .ForMember(dest => dest.Age, opt => opt.MapFrom(src => src.DateOfBirth.CalculateAge()));;

    CreateMap<Photo, PhotoDto>();

    CreateMap<MemberUpdateDto, AppUser>();

    }

    }

  • Posted 1 October 2022, 9:44 pm EST

    Hi

    As per the code snippet, all the values should have values and it seems there is some value that have null values or no values.

    Please check the values first and then try again.

    Regards,

    Manish Gupta

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels