Microsoft Dynamics 2011 N:N包含Guid的where子句的LINQ查询
我构造了一个简单的查询来返回用户团队成员身份(N:N关系)。这对所有用户都适用,但是,当我添加where子句以限制特定用户时,它会引发错误异常(请参见下面的堆栈跟踪) 奇怪的是,这在“where Users.FullName.StartsWith”(“Alex”)中可以很好地工作。Dynamics CRM SDK LINQ实现是否不支持where子句中的指南 有什么建议吗 示例代码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
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,非常感谢您的帮助!如果您将此解决方案作为答案而不是评论发布,那么我会将此问题标记为已接受。