我有一个win应用程序正在使用linq to crm通过用户名查询系统用户 在Crm 2011(IFD)。我有以下代码片段,显示我正在尝试的内容 去完成。该方法执行时没有错误,但是没有找到记录。 用户名显示为“domain \ testuser”om CRM。
public static SystemUser LookUpSystemUser()
{
var username= "domain\\testuser");
var list = (from c in Context.CreateQuery<SystemUser>()
where c.DomainName.Equals(username)
select c).ToList();
return list.FirstOrDefault();
}
答案 0 :(得分:3)
重新创建应用程序似乎解决了这个问题。仍然没有代码差异,所以仍然不确定发生了什么。
答案 1 :(得分:1)
这实际上不是你问题的答案,在你的特定实例中,由于每个DomainName只有一个SystemUser,所以它真的无关紧要,但这是最好的做法。
在LINQ语句上调用ToList()
时,它将返回SQL数据库中与查询匹配的所有实体。然后调用FirstOrDefault()
将返回第一个客户端。
不要在只对ToList()
感兴趣时调用FirstOrDefault()
,而是致电Top 1
。这实际上会导致{{1}}添加到选择查询。这将导致SQL服务器,CRM Web服务器以及在SQL服务器,CRM Web服务器和客户端之间传输的数据消耗更少的资源。
答案 2 :(得分:0)
尝试运行此方法(或规范的等效方法),看看你是否得到任何东西。如果是这样,您可以在选择语句中收紧条件。
public static SystemUser LookUpSystemUser()
{
return Context.CreateQuery<SystemUser>()
.Select(element => true)
.FirstOrDefault();
}
请记住,默认(SystemUser)将生成 null 。
不在计算机上,尚未对其进行测试。