• 1402/01/06
  • 0
  • 65
1402/01/06 |
backend

خطا System.NullReferenceException

با سلام و تبریک سال نو هنگام ذخیره اطلاعات یک سرویس در دیتا بیس با خطا System.NullReferenceException: 'Object reference not set to an instance of an object.' مواجه می شوم

using Application.ShoppingTerminal.Interfaces.Contexts;
using Application.ShoppingTerminal.Services.Buyer.Commands.RegisterBuyer;
using Application.ShoppingTerminal.Services.Seller.Commands.RegisterSeller;
using Domain.ShoppingTerminal.Entities.Buyers;
using Domain.ShoppingTerminal.Entities.Sellers;
using Microsoft.AspNetCore.Mvc;

namespace EndPoint.ShoppingTerminal.Areas.Admin.Controllers
{
    [Area("Admin")]
    public class BuyerController : Controller
    {

        private readonly IRegisterBuyerService _registerBuyerService;
        private readonly IDataBaseContext _context;
        public BuyerController(IRegisterBuyerService registerBuyerService, IDataBaseContext context)
        {
            registerBuyerService = _registerBuyerService;
            _context = context;

        }
        public IActionResult Index()
        {
            return View();
        }
        [HttpGet]
        public IActionResult Register()
        {
            return View();
        }


        [HttpPost]
        public IActionResult Register(Buyer buyer)
        {

            var result = _registerBuyerService.Execute(

            new RequestRegisterBuyerDto()
            {
                BuyerName = buyer.BuyerName,

                Bid = buyer.Bid,

                TinB = buyer.TinB,

                Bpc = buyer.Bbc,

                Tob = buyer.Tob,
                Bbc = buyer.Bbc,
                Bpn = buyer.Bpn,
                BAddress = buyer.BAddress

            });
            return View(result);



        }
    }
}
----------------سرویس
using Application.ShoppingTerminal.Interfaces.Contexts;
using Common.ShoppingTerminal.Dto;
using Domain.ShoppingTerminal.Entities.Buyers;

namespace Application.ShoppingTerminal.Services.Buyer.Commands.RegisterBuyer
{
    public class RegisterBuyerService : IRegisterBuyerService
    {
        private readonly IDataBaseContext _context;
        public RegisterBuyerService(IDataBaseContext context)
        {
            _context = context;

        }
        public ResultDto<ResultRegisterBuyerDto> Execute(RequestRegisterBuyerDto request)
        {
            Domain.ShoppingTerminal.Entities.Buyers.Buyer buyer= new()
            {
                Tob=request.Tob,
                Bpc=request.Bpc,    
                TinB=request.TinB,
                Bbc=request.Bbc,
                Bpn=request.Bpn,
                BAddress=request.BAddress,
                BuyerName = request.BuyerName,
                Bid=request.Bid,
            };
            _context.Buyers.Add(buyer);
            _context.SaveChanges();
            var result= new ResultDto<ResultRegisterBuyerDto>()
            {
                Data = new ResultRegisterBuyerDto()
                {
                    BuyerId = buyer.BuyerId,


                },
                IsSuccess = true,
                Message = "اطلاعات خریدار ثبت گردید"


            };
            return result;


        }

            }
}

 


سلام و عرض تبریک سال نو.

خطای System.NullReferenceException در کد شما بخاطر این است که متغیر _registerBuyerService به صورت Null در زمان اجرا می‌باشد. این متغیر در constructor شما به صورت غلط ایجاد شده است. به جای نوشتن registerBuyerService = _registerBuyerService در constructor باید _registerBuyerService = registerBuyerService نوشته شود.

یعنی constructor درست باید به این صورت باشد:

 

public BuyerController(IRegisterBuyerService registerBuyerService, IDataBaseContext context)
{
    _registerBuyerService = registerBuyerService;
    _context = context;
}

 



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری