• 05-02-2023, 00:54:45
    #1
    Arkadaşlar merhaba,

    update esnasında aldığım hataya yardımcı olabilecek var mı acaba ?

    SqlException: The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Cars_Images_ImageId". The conflict occurred in database "RentACar", table "dbo.Images", column 'Id'.

    hatası alıyorum sebebini anlayamadım
  • 05-02-2023, 00:58:43
    #2
    Python Coder
    Foreign Key ile bağlı olduğu için sizin ID kısmına yazdığınız değer Images tablosunda yer almadığı için hata alıyor olabilir misiniz , emin değilim
  • 05-02-2023, 01:02:19
    #3
    keremyagan adlı üyeden alıntı: mesajı görüntüle
    Foreign Key ile bağlı olduğu için sizin ID kısmına yazdığınız değer Images tablosunda yer almadığı için hata alıyor olabilir misiniz , emin değilim
    anlayamadım bir türlü hocam
    Controller ım
    [HttpPost]
            public async Task<IActionResult> Update(CarUpdateDto carUpdateDto)
            {
    
                var map = mapper.Map<Car>(carUpdateDto);
            
                var result = await validator.ValidateAsync(map);
                if (result.IsValid)
                {
                    await carService.UpdateCarAsync(carUpdateDto);
                    return RedirectToAction("Index", "Car", new { Area = "Admin" });
                }
                else
                {
                    result.AddToModelState(this.ModelState);
                }
    
                var categories = await categoryService.GetAllCategoriesNonDeleted();
                carUpdateDto.Categories = categories;
                var brands= await brandService.GetAllBrandsNonDeleted();
                carUpdateDto.Brands= brands;
                return View(carUpdateDto);
            }
    Servis kodlarım:
    public async Task UpdateCarAsync(CarUpdateDto carUpdateDto)
            {
                var userName = userService.GetUserName();
                var car = await unitOfWork.GetRepository<Car>().GetAsync(x => !x.IsDeleted && x.Id == carUpdateDto.Id, x => x.Category, x=>x.Brand,i=>i.Image);
                
                if (carUpdateDto.Photo != null)
                {
                    imageHelper.Delete(car.Image.FileName);
    
                    var imageUpload = await imageHelper.Upload(carUpdateDto.Model, carUpdateDto.Photo, ImageType.Post);
                    Image image = new(imageUpload.FullName, carUpdateDto.Photo.ContentType, userName);
                    await unitOfWork.GetRepository<Image>().AddAsync(image);
    
                    car.ImageId = image.Id;
    
                }
    
                
                var result = mapper.Map(carUpdateDto,car);
                car.UpdatedDate= DateTime.Now;
                car.UpdatedBy =userName;
                
                await unitOfWork.GetRepository<Car>().UpdateAsync(car);
                await unitOfWork.SaveAsync();
    
    
            }
  • 05-02-2023, 01:03:37
    #4
    Bu hatanın sebebi, güncelleme yapmak istediğiniz verinin, başka bir tabloda referans alan bir Foreign Key ile çakışmasıdır. Yani, veritabanındaki diğer tablolardaki verilerle uyumlu olmayan bir veri güncellemek istemişsiniz ve bu veritabanı tarafından engellendi. Bunun çözümü, güncelleme yapmak istediğiniz veriyi silmeden önce başka bir tabloda referansı olan verileri de silmek veya güncellemektir.