我正在尝试做一个简单的更新,但我不知道我的生活中找出了我做错的事情。
我有以下代码,目前无法正常工作 - 我的所有代码路径都没有返回值。
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列。
任何人都可以指出我出错的地方......非常棒!!
答案 0 :(得分:2)
首先关闭(出于与你的问题不同的原因),摆脱阻止:
catch (Exception)
{
return null;
}
其次,你说你返回List<tblWeight>
,但你没有在函数的任何地方做这件事。您需要在最后的try块内返回NULL,或者最好是正确填充的List<tblWeight>
结构。
要么返回你说要返回的对象,要么更改函数以返回“void”并且不返回任何内容。
就异常处理程序而言,请阅读有关处理异常的最佳实践。我不会在这篇文章中重申它,因为之前曾多次说过。我保证你会更快地编写代码,编写更少的代码,并编写更好的代码。
答案 1 :(得分:1)
您的UpdateFeedback
方法被定义为返回List<tblWeight>
但是当一切运行成功(即没有抛出异常)时,没有返回任何内容,这是C#中的编译错误。
我建议您完全摆脱try / catch块,因为捕获而不是重新抛出异常是非常糟糕的做法。如果出现问题,您应该例外地告诉您原因。
然后,您需要返回有意义的内容(例如return updatefeedback.tblWeights
)或将方法更改为void
返回值(即不返回任何内容)。
答案 2 :(得分:0)
在try块中没有返回,或者那不是你问的那个?
答案 3 :(得分:0)
错误表明并非所有代码路径都返回一个值,这是真的。
如果捕获(并吞下)异常,则只返回一个值(null)。 正常(希望)路径不会返回任何内容。
您应该在SaveChanges之后返回一些内容,或者将返回值更改为void