Linq to Crm(2011)无法按用户名搜索systemuser

时间:2013-03-07 01:58:42

标签: linq dynamics-crm-2011 dynamics-crm

我有一个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();
    }

3 个答案:

答案 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

不在计算机上,尚未对其进行测试。