Обычно при вызове метода Put из контроллера и попытке обновить свойства я получаю конфликт от Db.
введите описание изображения здесь
Использование шаблона репозитория с единицей работы.
Модель автомобиля -
public class Car : BaseModel
{
public Guid CategoryId { get; set; }
public Category Category { get; set; }
public Guid ManufacturerId { get; set; }
public Manufacturer Manufacturer { get; set; }
public Guid ManufacturerModelId { get; set; }
public ManufacturerModel ManufacturerModel { get; set; }
public DateTime ManufactureDate { get; set; }
public string Engine { get; set; }
public Guid FuelTypeId { get; set; }
public FuelType FuelType { get; set; }
public Guid FrameTypeId { get; set; }
public FrameType FrameType { get; set; }
public Guid ColorId { get; set; }
public Color Color { get; set; }
public Guid TransmissionId { get; set; }
public Transmission Transmission { get; set; }
public Guid DefectsId { get; set; }
public Defects Defects { get; set; }
public Guid SteeringWheelPosId { get; set; }
public SteeringWheelPos SteeringWheelPos { get; set; }
public Doors Doors { get; set; }
public int Seats { get; set; }
public DateTime VehicleInspection { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
Класс BaseModel
public class BaseModel : IBaseModel
{
public BaseModel()
{
Id = Guid.NewGuid();
CreatedOn = DateTime.Now;
}
[Key]
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
}
метод put (im используя cqrs здесь, а контроллер уже передает carDto методу)
public async Task<Unit> Handle(Command request, CancellationToken cancellationToken)
{
if(request.obj == null)
{
throw new StatusCodeException(HttpStatusCode.BadRequest, "Object is empty");
}
var DbEntry = uow.carRepository.GetById(request.Id);
if (DbEntry == null)
{
throw new StatusCodeException(HttpStatusCode.NotFound, "was not found in database", request.Id);
}
request.obj.Id = request.Id;
var s = uow.Mapper.Map(request.obj, DbEntry);
uow.carRepository.Update(s);
uow.Commit();
return Unit.Value;
}
//Update method in generic repository class
public void Update(T obj)
{
context.Attach(obj);
context.Entry(obj).State = EntityState.Modified;
}
Я не могу найти, где я делаю что-то не так. Проверено точками останова, данные везде верны. получение ошибки при вызове uow для фиксации изменений. Спасибо. С нетерпением жду.