我真的不确定这里发生了什么。我现在正在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查询绝对没有做任何事情。它不会检索联系人以供以后使用,它也不会注册为null来触发返回消息。
在我的调试控制台中,联系人字段显示为灰色(可见,具有空值,但无法单击),当我点击值列中的刷新按钮时,它表示
无法评估表达式
这可能是什么原因?我访问同一个数据库的其他API服务工作得非常好,只有这一行。
可能相关的事实
答案 0 :(得分:0)
我在上面的评论中提出了一些更改建议,并且还明确定义了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来修复它,如果它只是表现得很奇怪。