0
I cannot register an owner who depends on a foreign key Cidadeid
Mysqlexception: Cannot add or update a Child Row: a Foreign key Constraint fails (veterinario
.proprietario
, CONSTRAINT FK_Proprietario_Cidade_CidadeId
FOREIGN KEY (CidadeId
) REFERENCES cidade
(CidadeId
) ON DELETE CASCADE)
Mysqlconnector.Core.Serversession.Receivereplyasyncawaited(Valuetask<Arraysegment> task) in Serversession.Cs, line 774
Mysqlexception: Cannot add or update a Child Row: a Foreign key Constraint fails (veterinario
.proprietario
, CONSTRAINT FK_Proprietario_Cidade_CidadeId
FOREIGN KEY (CidadeId
) REFERENCES cidade
(CidadeId
) ON DELETE CASCADE)
Mysql.Data.Mysqlclient.MySqlDataReader.Activateresultset() in Mysqldatareader.Cs, line 130
Dbupdateexception: An error occurred while updating the Entries. See the Inner Exception for Details. Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Executeasync(Irelationalconnection Connection, Cancellationtoken cancellationToken)
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using ProjetoVeterinario.Data;
using ProjetoVeterinario.Models;
namespace ProjetoVeterinario.Controllers
{
public class ProprietarioController : Controller
{
private readonly ProjetoVeterinarioContext _context;
public ProprietarioController(ProjetoVeterinarioContext context)
{
_context = context;
}
// GET: Proprietario
public async Task<IActionResult> Index()
{
var projetoVeterinarioContext = _context.ProprietarioModel.Include(p => p.Cidade);
return View(await projetoVeterinarioContext.ToListAsync());
}
// GET: Proprietario/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var proprietarioModel = await _context.ProprietarioModel
.Include(p => p.Cidade)
.FirstOrDefaultAsync(m => m.ProprietarioId == id);
if (proprietarioModel == null)
{
return NotFound();
}
return View(proprietarioModel);
}
// GET: Proprietario/Create
public IActionResult Create()
{
ViewData["CidadeId"] = new SelectList(_context.CidadeModel, "CidadeId", "Nome");
return View();
}
// POST: Proprietario/Create
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ProprietarioId,Nome,Rg,Cpf,Rua,CidadeId")] ProprietarioModel proprietarioModel)
{
if (ModelState.IsValid)
{
_context.Add(proprietarioModel);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["Cidade"] = new SelectList(_context.CidadeModel, "CidadeId", "Nome", proprietarioModel.CidadeId);
return View(proprietarioModel);
}
// GET: Proprietario/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var proprietarioModel = await _context.ProprietarioModel.FindAsync(id);
if (proprietarioModel == null)
{
return NotFound();
}
ViewData["CidadeId"] = new SelectList(_context.CidadeModel, "CidadeId", "Nome", proprietarioModel.CidadeId);
return View(proprietarioModel);
}
// POST: Proprietario/Edit/5
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("ProprietarioId,Nome,Rg,Cpf,Rua,CidadeId")] ProprietarioModel proprietarioModel)
{
if (id != proprietarioModel.ProprietarioId)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(proprietarioModel);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ProprietarioModelExists(proprietarioModel.ProprietarioId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
ViewData["CidadeId"] = new SelectList(_context.CidadeModel, "CidadeId", "Nome", proprietarioModel.CidadeId);
return View(proprietarioModel);
}
// GET: Proprietario/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var proprietarioModel = await _context.ProprietarioModel
.Include(p => p.Cidade)
.FirstOrDefaultAsync(m => m.ProprietarioId == id);
if (proprietarioModel == null)
{
return NotFound();
}
return View(proprietarioModel);
}
// POST: Proprietario/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var proprietarioModel = await _context.ProprietarioModel.FindAsync(id);
_context.ProprietarioModel.Remove(proprietarioModel);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private bool ProprietarioModelExists(int id)
{
return _context.ProprietarioModel.Any(e => e.ProprietarioId == id);
}
}
}```
Proprietário Model
``` namespace ProjetoVeterinario.Models
{
[Table("Proprietario")]
public class ProprietarioModel
{
[Key]
public int ProprietarioId { get; set; }
[Required(ErrorMessage = "Esse campo é obrigatório")]
[StringLength(100, ErrorMessage = "Esse campo deve conter no máximo 100 letras")]
[RegularExpression("^([^0-9])*$", ErrorMessage = "Esse campo não deve conter números")]
public string Nome { get; set; }
public string Rg { get; set; }
public string Cpf { get; set; }
[StringLength(100, ErrorMessage = "Esse campo deve ter no máximo 100 letras")]
public string Rua { get; set; }
[ForeignKey("Cidade")]
public int CidadeId { get; set; }
public CidadeModel Cidade { get; set; }
public ICollection<AnimalModel> Animals { get; set; }
}
}