2010-08-31 114 views
0

我正在嘗試做一個簡單的更新,但我cannae我的生活工作了我做錯了什麼。LINQ到實體更新查詢

我有下面的代碼,目前不工作 - 我得到不是所有的代碼路徑返回一個值。

public List<tblWeight> UpdateFeedback(string memberid, string locationid, int prikey, string feedback) 
{ 

     MyEntities updatefeedback = new MyEntities(); 

     tblWeight newfeedback = (from q in updatefeedback.tblWeights 
           where q.MemberId == memberid && 
             q.LocationId == locationid && 
             q.PriKey == prikey 
           select q).SingleOrDefault(); 

     updatefeedback.tblWeights.AddObject(newfeedback); 
     updatefeedback.SaveChanges(); 

} 

基本上,我試圖根據where子句更新tblWeight中的Feedback列。

任何人都可以指出我要去哪裏錯了......徹底!!

  • 對不起 - 以前的嘗試/趕上是遺產。

回答

2

第一關(出於不同的原因不是你的問題),擺脫了塊:

 catch (Exception) 
     { 
      return null; 
     } 

其次,你說你返回List<tblWeight>,但你是不是在做它的任何地方功能。您可能需要在最後的try塊內返回NULL,或者最好是適當填充的List<tblWeight>結構。

要麼返回你說你要返回的對象,要麼改變函數返回一個「void」並且不返回任何東西。

就異常處理程序而言,請仔細閱讀關於處理異常的最佳實踐。我不會在這篇文章中重申它,因爲之前已經多次提到過。我向你保證,如果你這樣做,你會更快地編寫代碼,編寫更少的代碼,並編寫更好的代碼。

+0

乾杯戴夫 - 是今天比正常厚一點 - 我責怪頭冷。 – 2010-08-31 11:50:43

0

try塊中沒有返回值,或者不是你要求的值?

0

錯誤指出並非所有的代碼路徑都返回一個值,這是真的。

如果您捕獲(併吞下)異常,則只返回值(空)。 正常(希望)路徑不會返回任何內容。

您應該調用SaveChanges後返回的東西或者改變返回值作廢

1

UpdateFeedback方法定義爲返回一個List<tblWeight>但是當一切都成功運行將被返回(即不會拋出異常),沒有任何東西是在C#中編譯錯誤。

我建議您完全擺脫try/catch塊,因爲捕捉異常並不會重新拋出異常是非常糟糕的做法。如果出現問題,你應該得到一個例外來告訴你爲什麼。

然後,您需要返回有意義的內容(例如return updatefeedback.tblWeights)或將方法更改爲具有void返回值(即不返回任何內容)。