0

So Basically I Have Created Add Cars Method In CarsRepository.cs

   public int AddCar(Car car)
        {
            _carRentalSystemContext.Cars.Add(car);
            _carRentalSystemContext.SaveChanges();
            return 1;
        }

In CarsService.cs

   public int AddCar(Car car)
        {
           return _icarsRepository.AddCar(car); 
        }

In Both ICarsRepository And ICarsServices

int AddCar(Car car);

And Action In CarsController As

 [HttpPost]
        [Route("AddCar")]
        public IActionResult AddCar(Car car)
        {
            return new ObjectResult(_icarsService.AddCar(car));
        }

And My Model Class For Car Is

using System;
using System.Collections.Generic;


#nullable disable

namespace CAR_RENTAL_SYSTEM.Models
{
    public partial class Car
    {
        public Car()
        {
            Bookings = new HashSet<Booking>();
            CarReviews = new HashSet<CarReview>();
            DriverReviews = new HashSet<DriverReview>();
        }
        
        public int CarId { get; set; }
        public string CarModel { get; set; }
        public string CarRtoNumber { get; set; }
        public string CarType { get; set; }
        public decimal? CarMileage { get; set; }
        public int? CarPersonCapacity { get; set; }
        public string CarCondition { get; set; }
        public decimal? KmDone { get; set; }
        public string FuelType { get; set; }
        public decimal? RentPerKm { get; set; }
        public string ReviewId { get; set; }
        public string InService { get; set; }

        public virtual ICollection<Booking> Bookings { get; set; }
        public virtual ICollection<CarReview> CarReviews { get; set; }
        public virtual ICollection<DriverReview> DriverReviews { get; set; }
    }
}

The JSON Body Im Sending Through Swagger Is

{
  "carId": 0,
  "carModel": "Audi",
  "carRtoNumber": "MHJK5645",
  "carType": "Sedan",
  "carMileage": 12,
  "carPersonCapacity": 8,
  "carCondition": "Good",
  "kmDone": 15500,
  "fuelType": "Petrol",
  "rentPerKm": 25,
  "reviewId": "MHJK12",
  "inService": "Yes",
  "bookings": [
    {
      "bookingId": 0,
      "customerId": 0,
      "carId": 0,
      "driverId": 0,
      "fromDate": "2022-01-07T14:32:48.971Z",
      "toDate": "2022-01-07T14:32:48.971Z",
      "fromLocation": "string",
      "toLocation": "string",
      "noOfPersons": 0,
      "bookingStatus": "string",
      "journeyCompletion": "string",
      "paymentStatus": "string",
      "createdOn": "2022-01-07T14:32:48.971Z",
      "updatedOn": "2022-01-07T14:32:48.971Z",
      "customer": {
        "customerId": 0,
        "customerName": "string",
        "customerPassword": "string",
        "customerEmail": "string",
        "customerPhone": "string",
        "customerAdress": "string",
        "customerCity": "string",
        "customerPin": 0,
        "createdOn": "2022-01-07T14:32:48.971Z",
        "updatedOn": "2022-01-07T14:32:48.971Z",
        "isActive": "string",
        "bookings": [
          null
        ],
        "carReviews": [
          null
        ],
        "driverReviews": [
          null
        ],
        "feedbacks": [
          {
            "feedbackId": 0,
            "bookingId": 0,
            "customerId": 0,
            "feedbackMsg": "string"
          }
        ]
      },
      "driver": {
        "driverId": 0,
        "driverName": "string",
        "driverLicensenumber": "string",
        "driverEmail": "string",
        "driverPassword": "string",
        "driverPhone": "string",
        "driverAddress": "string",
        "anyAddiction": "string",
        "driverAge": 0,
        "reviewId": "string",
        "inService": "string",
        "isActive": "string",
        "bookings": [
          null
        ],
        "driverReviews": [
          null
        ],
        "journeyCompletions": [
          {
            "journeyId": 0,
            "bookingId": 0,
            "driverId": 0,
            "kmDone": 0,
            "totalFare": 0,
            "receipts": [
              {
                "receiptId": 0,
                "bookingId": 0,
                "journeyId": 0,
                "totalFare": 0,
                "paymentStatus": "string"
              }
            ]
          }
        ]
      },
      "carReviews": [
        {
          "reviewId": 0,
          "carId": 0,
          "customerId": 0,
          "bookingId": 0,
          "review": "string",
          "rating": 0,
          "customer": {
            "customerId": 0,
            "customerName": "string",
            "customerPassword": "string",
            "customerEmail": "string",
            "customerPhone": "string",
            "customerAdress": "string",
            "customerCity": "string",
            "customerPin": 0,
            "createdOn": "2022-01-07T14:32:48.972Z",
            "updatedOn": "2022-01-07T14:32:48.972Z",
            "isActive": "string",
            "bookings": [
              null
            ],
            "carReviews": [
              null
            ],
            "driverReviews": [
              null
            ],
            "feedbacks": [
              {
                "feedbackId": 0,
                "bookingId": 0,
                "customerId": 0,
                "feedbackMsg": "string"
              }
            ]
          }
        }
      ],
      "driverReviews": [
        {
          "reviewId": 0,
          "driverId": 0,
          "customerId": 0,
          "carId": 0,
          "bookingId": 0,
          "review": "string",
          "rating": 0,
          "customer": {
            "customerId": 0,
            "customerName": "string",
            "customerPassword": "string",
            "customerEmail": "string",
            "customerPhone": "string",
            "customerAdress": "string",
            "customerCity": "string",
            "customerPin": 0,
            "createdOn": "2022-01-07T14:32:48.972Z",
            "updatedOn": "2022-01-07T14:32:48.972Z",
            "isActive": "string",
            "bookings": [
              null
            ],
            "carReviews": [
              null
            ],
            "driverReviews": [
              null
            ],
            "feedbacks": [
              {
                "feedbackId": 0,
                "bookingId": 0,
                "customerId": 0,
                "feedbackMsg": "string"
              }
            ]
          },
          "driver": {
            "driverId": 0,
            "driverName": "string",
            "driverLicensenumber": "string",
            "driverEmail": "string",
            "driverPassword": "string",
            "driverPhone": "string",
            "driverAddress": "string",
            "anyAddiction": "string",
            "driverAge": 0,
            "reviewId": "string",
            "inService": "string",
            "isActive": "string",
            "bookings": [
              null
            ],
            "driverReviews": [
              null
            ],
            "journeyCompletions": [
              {
                "journeyId": 0,
                "bookingId": 0,
                "driverId": 0,
                "kmDone": 0,
                "totalFare": 0,
                "receipts": [
                  {
                    "receiptId": 0,
                    "bookingId": 0,
                    "journeyId": 0,
                    "totalFare": 0,
                    "paymentStatus": "string"
                  }
                ]
              }
            ]
          }
        }
      ],
      "feedbacks": [
        {
          "feedbackId": 0,
          "bookingId": 0,
          "customerId": 0,
          "feedbackMsg": "string"
        }
      ],
      "journeyCompletions": [
        {
          "journeyId": 0,
          "bookingId": 0,
          "driverId": 0,
          "kmDone": 0,
          "totalFare": 0,
          "receipts": [
            {
              "receiptId": 0,
              "bookingId": 0,
              "journeyId": 0,
              "totalFare": 0,
              "paymentStatus": "string"
            }
          ]
        }
      ],
      "receipts": [
        {
          "receiptId": 0,
          "bookingId": 0,
          "journeyId": 0,
          "totalFare": 0,
          "paymentStatus": "string"
        }
      ]
    }
  ],
  "carReviews": [
    {
      "reviewId": 0,
      "carId": 0,
      "customerId": 0,
      "bookingId": 0,
      "review": "string",
      "rating": 0,
      "customer": {
        "customerId": 0,
        "customerName": "string",
        "customerPassword": "string",
        "customerEmail": "string",
        "customerPhone": "string",
        "customerAdress": "string",
        "customerCity": "string",
        "customerPin": 0,
        "createdOn": "2022-01-07T14:32:48.972Z",
        "updatedOn": "2022-01-07T14:32:48.972Z",
        "isActive": "string",
        "bookings": [
          null
        ],
        "carReviews": [
          null
        ],
        "driverReviews": [
          null
        ],
        "feedbacks": [
          {
            "feedbackId": 0,
            "bookingId": 0,
            "customerId": 0,
            "feedbackMsg": "string"
          }
        ]
      }
    }
  ],
  "driverReviews": [
    {
      "reviewId": 0,
      "driverId": 0,
      "customerId": 0,
      "carId": 0,
      "bookingId": 0,
      "review": "string",
      "rating": 0,
      "customer": {
        "customerId": 0,
        "customerName": "string",
        "customerPassword": "string",
        "customerEmail": "string",
        "customerPhone": "string",
        "customerAdress": "string",
        "customerCity": "string",
        "customerPin": 0,
        "createdOn": "2022-01-07T14:32:48.972Z",
        "updatedOn": "2022-01-07T14:32:48.972Z",
        "isActive": "string",
        "bookings": [
          null
        ],
        "carReviews": [
          null
        ],
        "driverReviews": [
          null
        ],
        "feedbacks": [
          {
            "feedbackId": 0,
            "bookingId": 0,
            "customerId": 0,
            "feedbackMsg": "string"
          }
        ]
      },
      "driver": {
        "driverId": 0,
        "driverName": "string",
        "driverLicensenumber": "string",
        "driverEmail": "string",
        "driverPassword": "string",
        "driverPhone": "string",
        "driverAddress": "string",
        "anyAddiction": "string",
        "driverAge": 0,
        "reviewId": "string",
        "inService": "string",
        "isActive": "string",
        "bookings": [
          null
        ],
        "driverReviews": [
          null
        ],
        "journeyCompletions": [
          {
            "journeyId": 0,
            "bookingId": 0,
            "driverId": 0,
            "kmDone": 0,
            "totalFare": 0,
            "receipts": [
              {
                "receiptId": 0,
                "bookingId": 0,
                "journeyId": 0,
                "totalFare": 0,
                "paymentStatus": "string"
              }
            ]
          }
        ]
      }
    }
  ]
}

So After Building This Project I Get Build Succeded And In Swagger When I Try To Add A Car Using Respective JSON Body Following Error Occurs

System.ArgumentNullException: Value cannot be null. (Parameter 'key')
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityReferenceMap.TryGet(Object entity, IEntityType entityType, InternalEntityEntry& entry, Boolean throwOnNonUniqueness)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.TryGetEntry(Object entity, IEntityType entityType, Boolean throwOnTypeMismatch)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.InitialFixup(InternalEntityEntry entry, Boolean fromQuery)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.StateChanged(InternalEntityEntry entry, EntityState oldState, Boolean fromQuery)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntryNotifier.StateChanged(InternalEntityEntry entry, EntityState oldState, Boolean fromQuery)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.FireStateChanged(EntityState oldState)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges, Boolean modifyProperties)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState entityState, Boolean acceptChanges, Boolean modifyProperties, Nullable`1 forceStateWhenUnknownKey)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.PaintAction(EntityEntryGraphNode`1 node)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph[TState](EntityEntryGraphNode`1 node, Func`2 handleNode)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph[TState](EntityEntryGraphNode`1 node, Func`2 handleNode)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph[TState](EntityEntryGraphNode`1 node, Func`2 handleNode)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph[TState](EntityEntryGraphNode`1 node, Func`2 handleNode)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.AttachGraph(InternalEntityEntry rootEntry, EntityState targetState, EntityState storeGeneratedWithKeySetTargetState, Boolean forceStateWhenUnknownKey)
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.SetEntityState(InternalEntityEntry entry, EntityState entityState)
   at Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.Add(TEntity entity)
   at CAR_RENTAL_SYSTEM.Repositories.CarsRepository.AddCar(Car car) in C:\Users\Sarvesh\source\repos\CAR_RENTAL_SYSTEM\Repositories\CarsRepository.cs:line 15
   at CAR_RENTAL_SYSTEM.Services.CarsService.AddCar(Car car) in C:\Users\Sarvesh\source\repos\CAR_RENTAL_SYSTEM\Services\CarsService.cs:line 16
   at CAR_RENTAL_SYSTEM.Controllers.CarsController.AddCar(Car car) in C:\Users\Sarvesh\source\repos\CAR_RENTAL_SYSTEM\Controllers\CarsController.cs:line 22
   at lambda_method2(Closure , Object , Object[] )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

HEADERS
=======
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Length: 5075
Content-Type: application/json
Cookie: ai_user=05ZDd|2021-12-14T10:16:21.921Z; ai_session=zEAqz|1641560256601|1641562776408.5
Host: localhost:44353
Referer: https://localhost:44353/swagger/index.html
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Microsoft Edge";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
origin: https://localhost:44353
sec-fetch-site: same-origin
sec-fetch-mode: cors
sec-fetch-dest: empty

And I Checked Methods and Model there is no issue project build succeeds & Update Method Works For Same Model But Not Add Method

how to solve this error ?

Note:This Project Is Created Using DBFirst With Scaffold Command For Generating Models.

6
  • Can you post the data you are sending to the controller? Commented Jan 7, 2022 at 14:08
  • Yes I Will Upload The Data Im Sending Through Swagger Commented Jan 7, 2022 at 14:36
  • @AchoVasilev can u check the code for request, ive added it Commented Jan 7, 2022 at 15:01
  • Try removing the carId and sending only the car's data, without the collections. Only carModel, carType and etc. Commented Jan 7, 2022 at 15:41
  • Thank You @AchoVasilev It Has Worked Along With Using Insomnia As Rest Client With JSON Body Only For Respective Table , Not Like What Swagger Suggest By Default Commented Jan 7, 2022 at 18:42

1 Answer 1

1

Update: Thanks To AchoVasilev, I Removed Id From Json Body , As It was AutoIncrement In Database , And Also The Error Caused By Default Suggested Request Body By Swagger Contained Reference To Other Tables Also.

What I Did: I Used Insomnia As Rest Client And Called Same API Endpoint With Json Body Without CarID[Which Was Identity] & Removed The Other Table References Which results as :

{
  
  "carModel": "CarNameHere",
  "carRtoNumber": "DL456560",
  "carType": "Sedan",
  "carMileage": 18,
  "carPersonCapacity": 5,
  "carCondition": "Excellent",
  "kmDone": 15000,
  "fuelType": "Petrol",
  "rentPerKm": 20,
  "reviewId": "DL4565",
  "inService": "Yes"
  
 
}

And Sent POST Request And It Has Worked Flawlessely..

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.