2017-08-02 6 views
1

je veux mettre à jour seulement la valeur de colonne de rangée simple avec la restauration d'annulation mais quand je crée l'objet de table à l'intérieur si et passons à insertonsubmit cela me donne l'erreur, plz m'aide résoudre ceje veux mettre à jour seulement la valeur de colonne de ligne simple avec la restauration d'annulation

var challan = dataContext.Purchase_Challans.Where(t => t.Challan_ID == Convert.ToInt64(ViewState["challanid"]) && t.Company_ID == Convert.ToInt32(Session["CompanyId"])).Select(t => t).ToList(); 
         if (challan.Any()) 
         { 
          challan.ToList()[0].Inv_DocumentId = dmsPurchaseInvoice.Document_ID; 
          dataContext.Purchase_Challans.InsertOnSubmit() 
          dataContext.SubmitChanges(); 
         } 

Répondre

0

serait utile de connaître plus de détails sur l'erreur, mais je suppose que c'est parce que vous dites au DataContext d'insérer une entité que vous venez de récupérer (alors que vous voulez le mettre à jour).

Également le code que vous avez publié ne compile même pas et est plein de code douteux, comme challan.ToList() où il est déjà une liste, ou l'analyse des chaînes à l'intérieur d'un délégué.

Cela dit, ce code est plus simple et plus susceptibles de travailler (mais pour être honnête, je ne l'ai pas le tester):

var challanId = Convert.ToInt64(ViewState["challanid"]); 
var companyId = Convert.ToInt32(ViewState["CompanyId"]); 
var challan = dataContext.Purchase_Challans.SingleOrDefault(t => t.Challan_ID == challanId && t.Company_ID == companyId); 
if (challan != null) 
{ 
    challan.Inv_DocumentId = dmsPurchaseInvoice.Documet_Id; 
    dataContext.SubmitChanges(); 
} 
+0

travail de Thanks.It pour me.I était penser que si je l'utilise direct "submitchanges()" sans insertonsubmit puis rollback son pas work.but maintenant fonctionne merci pour cela. –

+0

Alors que je suis à la recherche de plus de réputation, pourriez-vous, s'il vous plaît, marquer la réponse comme acceptée et voter pour elle? Merci. – tinudu