我在here之前问过类似的问题,答案解决了我的问题。但是,现在我得到的问题与之前的相同,但是由于条件的变化,答案不再有效。如何使用QueryExpression对象从CRM中获取所有填充列?
下面是我正在运行的查询。我已经检查过someField
被设置为某个东西(这是一个通过guid指向另一个实体的查找字段)。我在result
中没有输入(除非我将条件切换为“不等于”)。这可能是由于该字段不带。
当我断点执行和检查Attributes
,我看到21个领域共出30的(他们中的一些可能是空的,肯定的,但这之一,即someField
,是不是),但我感兴趣的人不在那里!
QueryExpression query = new QueryExpression
{
EntityName = "entity",
ColumnSet = new ColumnSet{ AllColumns = true },
// Here I tried the code addition #1 below
Criteria =
{
Filters =
{
new FilterExpression
{
Conditions =
{
new ConditionExpression("someField", ConditionOperator.Equal, guid)
}
}
}
}
};
// Here I tried the code addition #2 below
EntityCollection result = Service.RetrieveMultiple(query);
我怎么想,我该如何解决它?
我尝试使用LinkEntities
在this blog讨论,但它并没有真正解决。我甚至不确定这是否是一种有意义的方法。它看起来如下。
LinkEntities =
{
new LinkEntity
{
Columns = new ColumnSet { AllColumns = true },
LinkFromEntityName = "entity",
LinkFromAttributeName = "otherEntityId",
LinkToEntityName = "entity2",
LinkToAttributeName = "entity2Id"
}
},
我也尝试雇用solution suggested on MSDN。结果相同。
request.LinkEntities.Add(
new LinkEntity(
"entity", "entity2", "otherEntityId", "entity2Id", JoinOperator.Inner));
request.LinkEntities[0].Columns.AddColumns("entity2Id");
request.LinkEntities[0].EntityAlias = "blobb";
再一次 - 由@JamesWood提供的解决方案是不工作了,因为我已经得到了管理员权限和的视场不空。
你能不能给我们说,你要执行相当于SQL语句? – Daryl
@Daryl当然!我怀疑它不会有任何用处。看起来有点奇怪(a.k.a.'EntityReference'或我可爱的小名字,在这里没有禁止就不能提到,哈哈)。出于某种原因,查找字段包含在**一些**实体中,而在其他实体中不包含**。在相同的检索! * SELECT * FROM实体WHERE someField =“1234”*,其中“1234”是我的指导。 –
看起来你也有一些问题,一般也是'QueryExpression'。您是否还尝试过使用早期绑定类的CRM linq提供程序? –