我真的不知道这里发生了什么。我正在处理我的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来修复它,如果它只是行为奇怪。