2017-08-22 19 views
0

我正在嘗試使用下面的Linq更新行,但由於某種原因它沒有進行更新。我已經GOOGLE了,並可以保證我捍衛我的表中的主鍵。下面是我的代碼:在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

你是否嘗試過單步執行代碼,看看它甚至達到了'ctx.SubmitChanges();'? –

+0

是的,它確實達到了ctx.SubmitChanges(); – user8427641

+0

你需要在調用'SubmitChanges'之前修改/映射結果的屬性 - 你不能指定整個實體。 – Oliver

回答

0

我覺得你的問題是在分配整個對象,這並沒有改變對象的內容,它改變了對象的內存地址,而不是(你正在失去的對象),你應該更新每個屬性單獨這樣

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

希望這可以幫助你