Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#crm linQ链接_C#_Entity Framework_Linq_Dynamics Crm 2011 - Fatal编程技术网

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 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 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;