Dynamics 365——查询

Dynamics 365---三种实体记录查询方式

LINQ 查询

var queryopportunityproduct = from c in organizationServiceContext.CreateQuery("lsh_opp_product")
                              join a in organizationServiceContext.CreateQuery("lsh_order")
                              on c["lsh_order_id"] equals a["lsh_orderid"]
                              where a["lsh_evolve"].Equals("100000001")
                              where c["lsh_products_type"].Equals("100000000")
                              select new
                              {
                                  opportunityproductname = c["lsh_name"],
                                  productName = c["lsh_productid"],
                                  orderName = a["lsh_name"]
                              };
foreach (var item in queryopportunityproduct)
{
    Console.WriteLine(item.opportunityproductname.ToString() + "-----" + item.orderName.ToString());
}

LINQ 查询需要引用Microsoft.Xrm.Sdk类库中的OrganizationServiceContext类。CreateQuery里放Entity的LogicalName就是数据库中的表。其余的编写与平常的LINQ没有区别,但有些LINQ的语法是有限制的,详情请参考dynamincs 365 CRM Linq晚期的用法和Linq的使用方法

FetchXml查询

string fetch = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                  "<entity name='lsh_opp_product'>" +
                    "<attribute name='lsh_name' />" +
                    "<order attribute='lsh_name' descending='false' />" +
                    "<filter type='and'>" +
                      "<condition attribute='lsh_products_type' operator='eq' value='100000000' />" +
                    "</filter>" +
                    "<link-entity name='lsh_order' from='lsh_orderid' to='lsh_order_id' link-type='inner' alias='ac'>" +
                      "<attribute name='lsh_name' />" +
                      "<filter type='and'>" +
                        "<condition attribute='lsh_evolve' operator='eq' value='100000001' />" +
                      "</filter>" +
                    "</link-entity>" +
                  "</entity>" +
                "</fetch>";
FetchExpression fetchxml = new FetchExpression(fetch);
DataCollection<Entity> entities = server.RetrieveMultiple(fetchxml).Entities;
if (entities != null && entities.Count > 0)
{
    foreach (Entity item in entities)
    {
        Console.WriteLine(item["lsh_name"].ToString() +"-----"+ ((AliasedValue)item["ac.lsh_name"]).Value);
    }
}

FetchXml是在系统里配好条件直接拿来用的,在这不做过多解释。

QueryExpression 查询

QueryExpression query = new QueryExpression
{
    EntityName = "lsh_opp_product",
    ColumnSet = new ColumnSet("lsh_name", "lsh_productid"),
    Criteria = new FilterExpression
    {
        FilterOperator = LogicalOperator.And,
        Conditions ={
             new ConditionExpression{
                  AttributeName = "lsh_products_type",
                  Operator = ConditionOperator.Equal,
                  Values = {100000000}
             }
        }
    },
    LinkEntities = {
        new LinkEntity{
            LinkToEntityName ="lsh_order",
            LinkToAttributeName = "lsh_orderid",
            LinkFromEntityName = "lsh_opp_product",
            LinkFromAttributeName = "lsh_order_id",
            Columns = new ColumnSet("lsh_name"),
            LinkCriteria = new FilterExpression
                {
                    FilterOperator = LogicalOperator.And,
                    Conditions =
                    {
                        new ConditionExpression
                        {
                             AttributeName = "lsh_evolve",
                             Operator = ConditionOperator.Equal,
                             Values = {100000001 }
                        }
                    }
            }
        }
    }
};
EntityCollection entities = server.RetrieveMultiple(query);
foreach (var item in entities.Entities)
{
    Console.WriteLine(item["lsh_name"].ToString() + "-----" + ((AliasedValue)item["lsh_order1.lsh_name"]).Value);
}

在这里稍作解释,用到的属性太多

属性详情
EntityName主实体
ColumnSet需要查询字段的系统架构名称
AttributeName条件字段名称
Operator比较符
Values比较值
LinkEntities链接实体
LinkToEntityName链接实体架构名称
LinkToAttributeName链接属性列
LinkFromEntityName主实体名称
LinkFromAttributeName主实体链接实体字段名称
LinkCriteria链接表的条件

那种查询方式更佳

说完了这三种查询方式,那哪种方式性能更佳,编写更方便呢?上图片

第一种为LINQ 查询、第二种为FetchXml查询、第三种为QueryExpression 查询。数据方面我准备了5000+条。从性能上来看,QueryExpression 性能更佳,但是编写代码复杂,可以把QueryExpression 查询优化成一个方法,每次就不用写这么多代码啦! 不过有不写代码的方式(FetchXml查询),为何不直接用呢!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dynamics 365是一款由微软公司推出的全面的企业资源计划(ERP)和客户关系管理(CRM)解决方案,它提供了一系列的应用程序和工具,用于帮助企业管理和优化他们的业务流程。 Dynamics 365开发是指通过使用Dynamics 365平台的开发工具和技术,为企业定制和构建应用程序,以满足其独特的业务需求。Dynamics 365开发人员可以利用平台上提供的工具和功能,如PowerApps和Power Automate等,快速创建定制的业务应用程序。同时,他们还可以使用Dynamics 365的集成开发环境和API,将其现有的业务应用程序和系统与Dynamics 365集成起来,实现数据的共享和协同工作。 Dynamics 365开发可以为企业带来以下好处: 1. 定制化能力:Dynamics 365平台提供了广泛的开发工具和功能,让开发人员可以根据企业的具体需求来定制和构建应用程序。这使得企业能够更好地适应不断变化的市场需求,提高业务的灵活性和竞争力。 2. 效率和自动化:Dynamics 365的开发工具和技术可以帮助企业实现业务流程的自动化和优化,减少人工操作和错误。通过将现有的业务应用程序和系统与Dynamics 365集成,企业可以实现数据的实时共享和自动化的工作流程,从而提高工作效率和产能。 3. 数据分析和洞察力:Dynamics 365提供了强大的数据分析和洞察力功能,帮助企业从海量数据中提取有价值的信息和洞察力。开发人员可以通过利用Dynamics 365平台上的分析工具和技术,为企业构建智能化的数据分析和报告系统,帮助企业做出更准确的决策和战略规划。 总之,Dynamics 365开发为企业提供了一个灵活和强大的平台,帮助他们定制和构建适合自己独特需求的应用程序,并实现业务流程的自动化和优化。随着企业的需求不断变化和发展,Dynamics 365开发将继续发挥重要作用,帮助企业保持竞争优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值