J'ai donc deux tables dans ma base de données, contacts et adresses:Les meilleures pratiques pour l'insertion/mise à jour des données dans plusieurs tables à la fois
Contacts: ContactID | AddressID | Prénom | Nom
Adresses: AddressID | Adresse1 | Adresse2 | Ville | Etat | Code postal
J'ai une page où vous pouvez ajouter un contact. Il contient toutes les informations pour un contact et une adresse pour un contact. Voici mon code lorsque vous soumettez le formulaire:
[HttpPost]
public ActionResult Edit(ContactsViewModel viewModel)
{
//if editing an contact, fetch it; otherwise, create a new one
Contact contact = viewModel.ContactId == 0
? new Contact()
: _adminRepository.GetContact(viewModel.ContactId);
TryUpdateModel(contact);
if (ModelState.IsValid)
{
_adminRepository.SaveAddress(contact.Address);
_adminRepository.SaveContact(contact);
return RedirectToAction("Index");
}
return View(viewModel); // validation error, so redisplay same view
}
Maintenant, ma principale préoccupation est que l'adresse est ajoutée avec succès, mais alors une erreur se produit lorsque je tente d'enregistrer le contact, laissant l'adresse dans la base de données sans contact.
Quelle est la meilleure pratique pour annuler les modifications en cas d'erreur?
Que faites-vous dans SaveAddress et SaveContact? essayez-vous de vous engager dans DB? essayez d'utiliser Unit of Work –