我尝试在我的CRM在线2015 Update 1实例中执行两个左外连接,但是我收到了一个错误。这就是我目前所拥有的:
var query_join8 = from a in crmContext.AccountSet
join c in crmContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
into gr
from c_joined in gr.DefaultIfEmpty()
join c in crmContext.ContactSet
on a.Name equals c.FullName
into gr2
from c2_joined in gr2.DefaultIfEmpty()
select new
{
contact_name = c_joined.FullName,
account_name = a.Name,
other_name = c2_joined.FullName
};
当我尝试执行它时,我收到此错误:
类型' System.NotSupportedException'的例外情况发生在 Microsoft.Xrm.Sdk.dll但未在用户代码中处理
其他信息:方法' GroupJoin'不能跟着 方法' SelectMany'或不受支持。尝试编写查询 支持方法的术语或称为“AsEnumerable”#39;或者' ToList' 调用不支持的方法之前的方法。
如果我注释掉第二个加入,它可以正常工作:
var query_join8 = from a in crmContext.AccountSet
join c in crmContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
into gr
from c_joined in gr.DefaultIfEmpty()
//join c in crmContext.ContactSet
//on a.Name equals c.FullName
//into gr2
//from c2_joined in gr2.DefaultIfEmpty()
select new
{
contact_name = c_joined.FullName,
account_name = a.Name,
//other_name = c2_joined.FullName
};
定义如何执行左连接:http://msdn.microsoft.com/en-us/library/gg509017.aspx#LeftJoin 博客描述它受支持:http://blogs.msdn.com/b/crminthefield/archive/2013/01/14/crm-2011-sdk-query-limitations-by-api.aspx
答案 0 :(得分:1)
CRM 2015上的文档仍然表明不支持外连接。 (MSDN: Use LINQ to construct a query)我知道在MSDN上还有一个示例显示左连接(Sample: Complex LINQ queries),但我怀疑是否真的将其转换为单个QueryExpression
。所以,我猜你正在达到凌为CRM的能力极限。