2017-08-22 2 views
0

J'essaie de mettre à jour la ligne à l'aide de Linq ci-dessous, mais elle ne fait pas de mise à jour pour une raison quelconque. Je l'ai googlé et peux m'assurer que j'ai définitivement la clé primaire dans ma table. Ci-dessous mon code:Modifier la ligne dans LINQ

 public static ReturnedSavedSearchStatus editSavedSearches(Eteach.Objects.SavedSearch savedSearch) 
    { 
     ReturnedSavedSearchStatus rtn = new ReturnedSavedSearchStatus(); 
     ET_TBL_TalentpoolSavedSearch dbsavedSearch = new ET_TBL_TalentpoolSavedSearch(); 
     dbsavedSearch = AutoMapper.Mapper.Map<ET_TBL_TalentpoolSavedSearch>(savedSearch); 

     if (dbsavedSearch.id < 0) 
     { 
      rtn.status = false; 
      rtn.description = "Error: Id cannot be less then 0"; 

     } 
     else 
     { 

      using (EteachDatabaseDataContext ctx = new EteachDatabaseDataContext()) 
      { 

       var result = ctx.ET_TBL_TalentpoolSavedSearches.SingleOrDefault(s => s.id == dbsavedSearch.id); 

       if (result != null) 
       { 
        result = dbsavedSearch; 
       // ctx.ET_TBL_TalentpoolSavedSearches.InsertOnSubmit(dbsavedSearch); 
        ctx.SubmitChanges(); 

        rtn.status = true; 
        rtn.description = "Saved Search saved"; 
       } 
      } 
     } 

     return rtn; 
    } 
+0

Avez-vous essayé de parcourir le code et voir si elle atteint même 'ctx.SubmitChanges();'? –

+0

oui il atteint ctx.SubmitChanges(); – user8427641

+0

Vous devez modifier/mapper les propriétés du résultat avant d'appeler 'SubmitChanges' - vous ne pouvez pas affecter l'entité entière. – Oliver

Répondre

0

Je pense que votre problème est à attribuer tout l'objet, qui ne change pas le contenu de l'objet, il modifie l'adresse mémoire de l'objet à la place (vous perdez l'objet), vous devriez mettre à jour chaque propriété comme celui-ci

result.Property1 = dbsavedSearch.Property1; 
result.Property2 = dbsavedSearch.Property2; 
... 
... 
ctx.SubmitChanges(); 

espère que cela peut vous aider à