1

S'il vous plaît nu avec moi pendant que j'explique le problème que je suis.comment mettre à jour la clé primaire actuelle se mettre à jour au lieu de la table générant une nouvelle clé primaire Asp.net mvc

J'ai une application où les magasins peuvent remplir un questionnaire.

dans cette application j'ai deux tables

  1. db.StoreAud(pk:AuditId) which contains all the stores information
  2. db.storequests(pk:ReviewId) which holds the all questions information. AuditId is a foreign key in db.storequests table.

Maintenant, voici la question si un magasin rempli le questionnaire les données enregistre parfaitement dans la base de données, est cependant le le même magasin répète le questionnaire. db.storequests crée une nouvelle ligne dans la base de données avec une nouvelle valeur de clé primaire au lieu de mettre à jour la ligne précédente.

S'il vous plaît vérifier l'image suivante pour plus d'informations, Image

je voudrais la ligne en surbrillance pour être mis à jour les secondes données de ligne.

Question est comment puis-je mettre à jour la ligne précédente si le même magasin fait le même questionnaire à nouveau. J'espère que cela a été fait depuis.

db.StoreAUD

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    [Column(Order = 1)] 
    public int AuditId { get; set; } 

    public string Date { get; set; } 

    public int StoreNumber { get; set; } 
    public string StoreName { get; set; } 

db.storequests

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int ReviewId { get; set; } 

    public int AuditId { get; set; } 

    public int QuestionOne { get; set; } 

    public string QuestionTwo { get; set; } 
    public string QuestionThree { get; set; } 
    public string QuestionFour { get; set; } 

contrôleur

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(StoreQuestions storequestions) 
    { 





     if (ModelState.IsValid) 
     { 

      StoreAudit findingAudit = db.StoreAudit.Find(storequestions.AuditId); // grabbing the id from th store audit table 
      findingAudit.ReadOnlyTickBox = true; 
      db.StoreQuestions.Add(storequestions); 



      db.SaveChanges(); 






      return RedirectToAction("Details", "Audit", new { id = storequestions.AuditId }); 
     } 

     return View(storequestions); 
    } 

Répondre

0

Vous devez définir l'état de l'entité sur modifié au lieu d'ajouter.

S'il vous plaît trouver l'exemple exemple ci-dessous

StoreAudit findingAudit = db.StoreAudit.Find(storequestions.AuditId); 
findingAudit.ReadOnlyTickBox = true; 
db.Entry(findingAudit).State = EntityState.Modified; 
db.SaveChanges(); 
+0

en obtenant de rien de la méthode d'ajout est mis à jour ou même d'ajouter à la base de données ainsi que ses les storequestions pk je suis en train de mettre à jour à la place de la table de storeaudit si vous tu vois ce que je veux dire – cedPound