无法计算表达式- Linq查询只返回null



我真的不知道这里发生了什么。我正在处理我的Web Api中的一些操作,其中一个涉及使用标识符检查数据库中联系人的存在,然后检索联系人,如果他们存在。

我有我的表达式:

var contact = context.Contacts.Where(x => x.UniqueId == Identifier).FirstOrDefault();
if (contact == null) { return "Identifier not recognised. Check correct type and Identifier"; }
//Goes on to perform tasks with contact information.

然后继续…但这就是它表现奇怪的地方。

原始linq查询完全不做任何事情。它没有检索联系人以供以后使用,也没有将其注册为空来触发返回消息。

在我的调试控制台中,联系人字段只是变灰(可见,带有空值,但无法点击),当我点击值列中的刷新按钮时,它说

无法求值表达式

这可能是什么原因?我的其他API服务访问相同的数据库工作绝对很好,它只是这一行。

可能相关的事实

  • 在我正在使用的两个名称空间中,两个称为"contact"的实体之间存在类型冲突。我不认为这很重要。选角并没有解决这个问题。我只是想说一下。

我做了上面评论中建议的一些更改,并且还显式地定义了Contact,现在它可以很好地从数据库加载Contact。我真的很困惑为什么,因为它基本上只是重构,但以下是工作:

namespace.Models.Contact contact = context.Contacts.FirstOrDefault(x => x.UniqueId == Identifier);
//If Identifier isn't recognised return.
if (contact == default(namespace.Models.Contact)) 
{ 
     return "Identifier not recognised. Check correct type and Identifier"; 
}

这个工作代码在功能上与我的问题中发布的代码没有什么不同,这一事实使我感到困惑。我猜这一定是我的VS在做的事情。

Alex Pavlov在评论中指向https://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality

这段代码是完美的,我可以通过重启VS来修复它,如果它只是行为奇怪。

最新更新