C#crm linQ链接
我需要从C#crm linQ链接,c#,entity-framework,linq,dynamics-crm-2011,C#,Entity Framework,Linq,Dynamics Crm 2011,我需要从CRM实体中查询一些值,其中链接实体在其名称中包含字符串 我试图解释: 我有新的供应合同表 此表有一个名为new\u pod new\u pod实体有两个字段:new\u citypod和new\u street new\u citypod指向另一个名为new\u city new_street指向另一个名为new_street 我需要查询new\u supplycontract表,以仅检索new\u pod包含街道哪个名称包含字符串I pass和城市哪个名称包含另一个字符串I pa
CRM实体
中查询一些值,其中链接实体
在其名称
中包含字符串
我试图解释:
- 我有新的供应合同表
- 此表有一个名为
new\u pod
实体有两个字段:new\u citypod和new\u pod
new\u street
指向另一个名为new\u citypod
new\u city
指向另一个名为new_street
new_street
new\u supplycontract
表,以仅检索new\u pod
包含街道
哪个名称包含字符串
I pass和城市
哪个名称包含另一个字符串
I pass的记录
我知道此代码用于检索其两个文本字段“new\u city
”和“new\u address
”类似于传递的两个字符串的所有new\u supplycontract
实体
QueryExpression query = new QueryExpression(new_supplycontract.EntityLogicalName);
query.ColumnSet = new ColumnSet(true);
query.Criteria.AddCondition("new_city", ConditionOperator.NotNull);
query.Criteria.AddCondition("new_address", ConditionOperator.NotNull);
query.LinkEntities.Add(new LinkEntity(new_supplycontract.EntityLogicalName, "new_comune", "new_city", "new_comuneid", JoinOperator.Inner));
query.LinkEntities[0].Columns.AddColumns("new_name");
query.LinkEntities[0].EntityAlias = "comuneTemp";
query.LinkEntities[0].LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + comune + "%");
query.LinkEntities.Add(new LinkEntity(new_supplycontract.EntityLogicalName, new_via.EntityLogicalName, "new_address", "new_viaid", JoinOperator.Inner));
query.LinkEntities[1].Columns.AddColumns("new_name");
query.LinkEntities[1].EntityAlias = "viaTemp";
query.LinkEntities[1].LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + via + "%");
DataCollection<Entity> entities = service.RetrieveMultiple(query).Entities;
QueryExpression query=newqueryexpression(new\u supplycontract.EntityLogicalName);
query.ColumnSet=新列集(true);
query.Criteria.AddCondition(“new_city”,ConditionOperator.NotNull);
query.Criteria.AddCondition(“新地址”,ConditionOperator.NotNull);
query.linkenties.Add(new LinkEntity(new\u supplycontract.EntityLogicalName,“new\u comune”,“new\u city”,“new\u comuneid”,JoinOperator.Inner));
query.LinkEntities[0].Columns.AddColumns(“新名称”);
query.LinkEntities[0].EntityAlias=“comuneTemp”;
query.LinkEntities[0].LinkCriteria.AddCondition(“新的_名称”,ConditionOperator.Like,“%”+comune+“%”);
query.linkenties.Add(new LinkEntity(new_supplycontract.EntityLogicalName,new_via.EntityLogicalName,“new_地址”,“new_viaid”,JoinOperator.Inner));
query.LinkEntities[1].Columns.AddColumns(“新名称”);
query.LinkEntities[1].EntityAlias=“viaTemp”;
query.LinkEntities[1].LinkCriteria.AddCondition(“新名称”,ConditionOperator.Like,“%”+via+“%”;
数据收集实体=service.RetrieveMultiple(query).entities;
但是我真的不知道如何使用这个代码来实现我的目标。我不知道如何过滤entityreference的entityreference
任何帮助都将不胜感激LinkedEntity可以在CRM 2011中嵌套LinkedEntity。自2013年引入EntityName属性以来,情况发生了变化,不再需要嵌套实体 但基本上,您可以从supplycontract实体开始,然后针对您的新实体添加一个链接实体。从该链接实体中,需要添加两个链接实体,一个添加到新的城市实体,另一个添加到新的街道实体。这两个链接实体中的每一个都需要一个包含条件表达式,在该表达式中传递要用于筛选的两个字符串 例: 现在,我个人更喜欢LINQ,因为查询比使用LinkedEntity更容易阅读
希望这有帮助。LinkedEntity可以在CRM 2011中嵌套LinkedEntity。自2013年引入EntityName属性以来,情况发生了变化,不再需要嵌套实体 但基本上,您可以从supplycontract实体开始,然后针对您的新实体添加一个链接实体。从该链接实体中,需要添加两个链接实体,一个添加到新的城市实体,另一个添加到新的街道实体。这两个链接实体中的每一个都需要一个包含条件表达式,在该表达式中传递要用于筛选的两个字符串 例: 现在,我个人更喜欢LINQ,因为查询比使用LinkedEntity更容易阅读
希望这能有所帮助。我在使用LINQ to CRM时遇到了无数问题,主要是因为我对它的工作原理有误解。不幸的是,查询表达式非常冗长且难以阅读。我创建并使用DLaB.Xrm库使我的生活更简单(而且更类型化,我喜欢一些早期开发人员) 以下是您使用DLaB.Xrm进行的查询:
var qe = QueryExpressionFactory.Create<new_supplycontract>();
var podLink = qe.AddLink<new_pod>(new_supplycontract.Fields.new_Pod, new_pod.Fields.Id);
podLink.AddLink<new_city>(new_pod.Fields.new_citypod, // This is the attribute of the "from" entity to join on
new_city.Fields.Id, // This is the attribute of the "to" entity to join on. If name is identical, this parameter can be removed
new ColumnSet(new_city.Fields.new_name)) // AliasedValue to add to the result
.LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + comune + "%");
podLink.AddLink<new_street>(new_pod.Fields.new_street,
new_street.Fields.Id,
ColumnSet(new_street.Fields.new_name))
.LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + via + "%");
var leads = service.GetEntities(qe);
var qe=QueryExpressionFactory.Create();
var podLink=qe.AddLink(new\u supplycontract.Fields.new\u Pod,new\u Pod.Fields.Id);
AddLink(new_pod.Fields.new_citypod,//这是要加入的“from”实体的属性
new_city.Fields.Id,//这是要加入的“to”实体的属性。如果名称相同,则可以删除此参数
new ColumnSet(new_city.Fields.new_name))//要添加到结果中的AliasedValue
.LinkCriteria.AddCondition(“新名称”,ConditionOperator.Like,“%”+comune+“%”);
podLink.AddLink(新建pod.Fields.new_street、,
new_street.Fields.Id,
列集(新街道、字段、新名称))
.LinkCriteria.AddCondition(“新的_名称”,ConditionOperator.Like,“%”+通过+“%”);
var leads=service.GetEntities(qe);
我在使用LINQ to CRM时遇到了无数问题,主要是因为我对它的工作原理有误解。不幸的是,查询表达式非常冗长且难以阅读。我创建并使用DLaB.Xrm库使我的生活更简单(而且更类型化,我喜欢一些早期开发人员) 以下是您使用DLaB.Xrm进行的查询:
var qe = QueryExpressionFactory.Create<new_supplycontract>();
var podLink = qe.AddLink<new_pod>(new_supplycontract.Fields.new_Pod, new_pod.Fields.Id);
podLink.AddLink<new_city>(new_pod.Fields.new_citypod, // This is the attribute of the "from" entity to join on
new_city.Fields.Id, // This is the attribute of the "to" entity to join on. If name is identical, this parameter can be removed
new ColumnSet(new_city.Fields.new_name)) // AliasedValue to add to the result
.LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + comune + "%");
podLink.AddLink<new_street>(new_pod.Fields.new_street,
new_street.Fields.Id,
ColumnSet(new_street.Fields.new_name))
.LinkCriteria.AddCondition("new_name", ConditionOperator.Like, "%" + via + "%");
var leads = service.GetEntities(qe);
var qe=QueryExpressionFactory.Create();
var podLink=qe.AddLink(new\u supplycontract.Fields.new\u Pod,new\u Pod.Fields.Id);
AddLink(new_pod.Fields.new_citypod,//这是要加入的“from”实体的属性
new_city.Fields.Id,//这是要加入的“to”实体的属性。如果名称相同,则可以删除此参数
new ColumnSet(new_city.Fields.new_name))//要添加到结果中的AliasedValue
.LinkCriteria.AddCondition(“新名称”,ConditionOperator.Like,“%”+comune+“%”);
podLink.AddLink(新的\u pod.Fields.n
ConditionExpression condition3 = new ConditionExpression();
...
LinkEntity link3 = new LinkEntity();
...
link3.LinkCriteria.Conditions.Add(condition3);
ConditionExpression condition2 = new ConditionExpression();
...
LinkEntity link2 = new LinkEntity();
...
link2.LinkCriteria.Conditions.Add(condition2);
LinkEntity link1 = new LinkEntity();
...
link1.LinkEntities.Add(link2);
link1.LinkEntities.Add(link3);
QueryExpression query = new QueryExpression("");
...
query.LinkEntities.Add(link1);
DataCollection<Entity> entities = service.RetrieveMultiple(query).Entities;