gpt4 book ai didi

linq - Dynamics CRM 2011 - 使用外连接过滤 LINQ 查询

转载 作者:行者123 更新时间:2023-12-01 14:56:19 25 4
gpt4 key购买 nike

我需要查询 CRM 中具有特定类型相关实体的记录。通常,我会使用 Left Outer Join 来执行此操作,然后筛选出右侧包含 NULL 的所有行。

例如:

var query = from c in orgContext.CreateQuery<Contact>()
join aj in orgContext.CreateQuery<Account>()
on c.ContactId equals aj.PrimaryContactId.Id
into wonk
from a in wonk.DefaultIfEmpty()
where a.Name == null
select new Contact
{
FirstName = c.FirstName,
LastName = c.LastName,
};

这应该会返回任何不是帐户主要联系人的联系人。但是,此查询最终会返回所有 联系人...!当您查看在 SQL Profiler 中生成的 SQL 时,它是这样的:

SELECT cnt.FirstName, cnt.LastName
FROM Contact as cnt
LEFT OUTER JOIN Account AS acct
ON cnt.ContactId = acct.PrimaryContactId AND acct.Name is NULL

所以,我得到了 Left Join OK,但是过滤器 Join 子句中,而不是在 WHERE 子句中。并且不像它应该的那样,像这样:

SELECT cnt.FirstName, cnt.LastName
FROM Contact as cnt
LEFT OUTER JOIN Account AS acct
ON cnt.ContactId = acct.PrimaryContactId
WHERE acct.Name is NULL

很明显,这个查询的结果非常不同!有没有办法让 CRM 上的查询生成正确的 SQL?

这是底层 FetchXML 请求的限制吗?

最佳答案

不幸的是,这是 CRM 的 LINQ 和 FetchXML 实现的限制。 SDK 中的此页面指出不支持外部联接:

http://technet.microsoft.com/en-us/library/gg328328.aspx

虽然我找不到官方文档,但有很多结果表明人们提到 FetchXML 不支持左外连接,例如:

http://gtcrm.wordpress.com/2011/03/24/fetch-xml-reports-for-crm-2011-online/

关于linq - Dynamics CRM 2011 - 使用外连接过滤 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com