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

时间:2015-08-25 16:54:23

标签: c# linq

我真的不确定这里发生了什么。我现在正在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服务工作得非常好,只有这一行。

可能相关的事实

  • 两个实体之间存在类型冲突,称为' contact'在我使用的两个命名空间中。我不会认为这很重要。铸造还没有解决它。我只是想提一下。

1 个答案:

答案 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来修复它,如果它只是表现得很奇怪。