Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft Dynamics 2011 N:N包含Guid的where子句的LINQ查询_Linq_Dynamics Crm_Dynamics Crm 2011 - Fatal编程技术网

Microsoft Dynamics 2011 N:N包含Guid的where子句的LINQ查询

Microsoft Dynamics 2011 N:N包含Guid的where子句的LINQ查询,linq,dynamics-crm,dynamics-crm-2011,Linq,Dynamics Crm,Dynamics Crm 2011,我构造了一个简单的查询来返回用户团队成员身份(N:N关系)。这对所有用户都适用,但是,当我添加where子句以限制特定用户时,它会引发错误异常(请参见下面的堆栈跟踪) 奇怪的是,这在“where Users.FullName.StartsWith”(“Alex”)中可以很好地工作。Dynamics CRM SDK LINQ实现是否不支持where子句中的指南 有什么建议吗 示例代码 using (var service = new OrganizationService("Xrm&q

我构造了一个简单的查询来返回用户团队成员身份(N:N关系)。这对所有用户都适用,但是,当我添加where子句以限制特定用户时,它会引发错误异常(请参见下面的堆栈跟踪)

奇怪的是,这在“where Users.FullName.StartsWith”(“Alex”)中可以很好地工作。Dynamics CRM SDK LINQ实现是否不支持where子句中的指南

有什么建议吗

示例代码

 using (var service = new OrganizationService("Xrm"))
        {
            using (var xrm = new XrmServiceContext(service))
            {
                var AlexUser = xrm.SystemUserSet.Where(p => p.FullName.StartsWith("Alex")).First();
                var AlexID = AlexUser.Id;

                var Test =
                        from Users in xrm.SystemUserSet
                        join TeamMemberships in xrm.TeamMembershipSet on Users.Id equals TeamMemberships.SystemUserId
                        join Teams in xrm.TeamSet on TeamMemberships.TeamId equals Teams.Id
                        where Users.Id == AlexID     // <-- problematic where clause
                        orderby Users.FullName
                        select new
                        {
                            FullName = Users.FullName,
                            UserID = Users.Id,
                            TeamName = Teams.Name
                        };

                var Test1 = Test.ToList();
            }
        }
使用(var服务=新组织服务(“Xrm”))
{
使用(var xrm=new XrmServiceContext(服务))
{
var AlexUser=xrm.SystemUserSet.Where(p=>p.FullName.StartsWith(“Alex”)).First();
var-AlexID=AlexUser.Id;
var检验=
来自xrm.SystemUserSet中的用户
在用户的xrm.TeamMembershipSet中加入TeamMemberships。Id等于TeamMemberships.SystemUserId
在xrm.TeamSet中加入团队。TeamMemberships.TeamId等于Teams.Id

如果Users.Id==AlexID/而不是
Users.Id
,请尝试
Users.SystemUserId
。同样,如果不是
Teams.Id
,请尝试
Teams.TeamId


至于为什么这样做,我不知道有任何文档说明了这一点,但因为生成的早期绑定文件中的实体继承自
实体
,它们必须具有
Id
属性。但是,因为早期绑定的
OrganizationServiceContext
将实体属性直接映射到CRM d数据库,其表不包含
Id
列,在LINQ提供程序中使用
Id
属性将不起作用,因此您必须使用实际的数据库/架构名称。

而不是
Users.Id
,请尝试
Users.SystemUserId
。类似地,如果不是
Teams.Id
,请尝试
Teams.TeamId
。您好ter,非常感谢您的帮助!如果您将此解决方案作为答案而不是评论发布,那么我会将此问题标记为已接受。