LINQ to Entities更新查询

时间:2010-08-31 11:43:23

标签: linq-to-entities

我正在尝试做一个简单的更新,但我不知道我的生活中找出了我做错的事情。

我有以下代码,目前无法正常工作 - 我的所有代码路径都没有返回值。

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列。

任何人都可以指出我出错的地方......非常棒!!

  • 对不起 - 以前的try / catch是遗产。

4 个答案:

答案 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

相关问题