Power Apps 学习笔记 - IOrganizationService Interface

news2024/9/23 5:22:47

文章目录

    • 1. IOrganization Interface
      • 1.1 基本介绍
      • 1.2 方法分析
    • 2. Entity对象
      • 2.1 Constructor
      • 2.2 Properties
      • 2.3 Methods
    • 3. 相关方法
      • 3.1 单行查询 Retrive
      • 3.2 多行查询 RetriveMultiple
      • 3.3 增加 Create
      • 3.4 删除 Delete
      • 3.5 修改 Update
    • 4. 数据查询的不同实现方式
      • 4.1 QueryExpression
      • 4.2 QueryByAttribute
      • 4.3 FetchExpression
      • 4.4 LINQ

1. IOrganization Interface

1.1 基本介绍

  1. IOrganization 是用于向组织提供元数据以及数据的编程访问的接口. (Dataverse的增删改查以及表联系的相关操作)
//ServiceClient、CrmServiceClient 都可实现 IOrganizationService接口
IOrganizationService service = new CrmServiceClient(connectionString);
IOrganizationService service = new ServiceClient(connectionString);
using Microsoft.Crm.Sdk.Messages;
using Microsoft.PowerPlatform.Dataverse.Client;
using Microsoft.Xrm.Sdk;

class Program
{
    // Dataverse环境URL以及登录信息
   static string url = "https://yourorg.crm.dynamics.com";
   static string userName = "you@yourorg.onmicrosoft.com";
   static string password = "yourPassword";

    // 连接上述代码串进行测试
    static string connectionString = $@"
    AuthType = OAuth;
    Url = {url};
    UserName = {userName};
    Password = {password};
    AppId = 51f81489-12ee-4a9e-aaae-a2591f45987d;
    RedirectUri = http://localhost;
    LoginPrompt=Auto;
    RequireNewInstance = True";

    static void Main()
    {
        // 获取IorganizationService的接口实例
        IOrganizationService service = new ServiceClient(connectionString);

        var response = (WhoAmIResponse)service.Execute(new WhoAmIRequest());
        Console.WriteLine($"User ID is {response.UserId}.");

        // Pause the console so it does not close.
        Console.WriteLine("Press the <Enter> key to exit.");
        Console.ReadLine();
    }
}

  参考文献. c#连接Microsoft Dataver:c#连接 MicroSoft Dataverse

1.2 方法分析

在这里插入图片描述
  参考文献. IOrganization:IOrganizationService 接口

2. Entity对象

2.1 Constructor

在这里插入代码片

2.2 Properties

在这里插入代码片

2.3 Methods

在这里插入代码片

  参考文献. Entity对象:Entity对象

3. 相关方法

3.1 单行查询 Retrive

  a. 代码及使用

//public Microsoft::Xrm::Sdk::Entity ^ Retrieve(System::String ^ entityName, Guid id, Microsoft::Xrm::Sdk::Query::ColumnSet ^ columnSet);    
static void Retrive(IOrganizationService service){
    string entityName = "crda9_room"; // 逻辑名称
    ColumnSet columnSet = new ColumnSet("crda9_name", "crda9_type", "crda9_site"); // 查询的属性
    Guid guid = new Guid("4e4c81a1-439d-ee11-be37-000d3a85d073"); // 全局唯一标识符

    Entity entity = service.Retrieve(entityName, guid, columnSet); // 发起查询
    Console.WriteLine($"name:{entity.GetAttributeValue<string>("crda9_name")}"
        + "   " + $"type:{entity.GetAttributeValue<OptionSetValue>("crda9_type").Value}"
        + "   " + $"site:{entity.GetAttributeValue<string>("crda9_site")}");
}

3.2 多行查询 RetriveMultiple

  a. 代码及使用

// Microsoft::Xrm::Sdk::EntityCollection ^ RetrieveMultiple(Microsoft::Xrm::Sdk::Query::QueryBase ^ query);
static void RetriveMultiple(IOrganizationService service){
    QueryExpression query = new("crda9_room") { }; // 表逻辑名称
    EntityCollection results = service.RetrieveMultiple(query); // 查询发送

    foreach (Entity entity in results.Entities){
        Console.WriteLine($"Id:{entity.Id}"); // 全局唯一标识符(每行数据有一个Id)
        Console.WriteLine($"name:{entity.Attributes["crda9_name"]}");
    }
}

  b. QueryExpression 总结

public ref class QueryExpression sealed : Microsoft::Xrm::Sdk::Query::QueryBase
query.EntityName = "crda9_room"; // 1.EntityName --> 表逻辑名(可在构造函数时直接构造)
query.ColumnSet.AddColumns("crda9_name"); // 2.ColumnSet --> 负责查询列数
query.Criteria.AddCondition("crda9_type", ConditionOperator.Equal, 0); // 3.Criteria --> 查询限定条件
query.AddOrder("crda9_name", OrderType.Ascending); // 4. AddOrder --> 列排序
query.TopCount = 2; // 5. TopCount --> 控制显示的行数(与PageInfo不能同时使用)
query.PageInfo = new PagingInfo() {  // 6. PageInfor --> 控制分页
    PageNumber = 1, // 页数
    Count = 2 // 每页数量
};

3.3 增加 Create

  a. 代码及使用

// Guid Create(Microsoft::Xrm::Sdk::Entity ^ entity);
static void CreateExpressionExample(IOrganizationService service)
{
    Entity entity = new Entity("crda9_student");
    entity["crda9_name"] = "新学生_张雪雪";
    entity["crda9_age"] = 17;
    
    Guid id = service.Create(entity); 
    Console.WriteLine("新学生的唯一id为:" + id);
}

3.4 删除 Delete

  a. 代码及使用

//  void Delete(System::String ^ entityName, Guid id);
static void DeleteExpressionExample(IOrganizationService service)
{
    string entityName = "crda9_student"; // 逻辑名称
    Guid guid = new Guid("e334ba87-4c9a-ee11-be37-000d3a85d073"); // 全局唯一标识符

    service.Delete(entityName, guid); 
}

3.5 修改 Update

  a. 代码及使用

// void Update(Microsoft::Xrm::Sdk::Entity ^ entity);
    static void UpdateExpressionExample(IOrganizationService service)
    {
        Guid id = CreateExpressionExample(service); // 先调用函数创建一个新学生,返回其Id唯一标识

        Entity entity = new Entity("crda9_student");
        entity.Id = id;
        entity["crda9_name"] = "更新后的学生";

        service.Update(entity);
        Console.WriteLine("successful update....");
    }


4. 数据查询的不同实现方式

  QueryBase的实现类
在这里插入图片描述
  参考文献. QueryBase抽象类接口:QueryBase抽象类接口

4.1 QueryExpression

  QueryExpression类 – 属性
在这里插入图片描述

  1. QueryExpression 是较为常用的数据查询类,支持列查询、条件判断、实体联系、排序等操作,
  2. 示例代码见相关方法当中多行查询

4.2 QueryByAttribute

  QueryByAttribute类 – 属性
在这里插入图片描述

  1. 感觉功能可以由QueryByExpression代替,感觉这个可能更加侧重通过属性来查找判断,
	static void QueryByAttributeTest(IOrganizationService service){
	    QueryByAttribute query = new QueryByAttribute("crda9_room") {
	        ColumnSet = new ColumnSet("crda9_name", "crda9_site"),
	    };
	
	    query.AddAttributeValue("crda9_site", "武汉"); // 此行必须实现(查找满足条件的数据)
	
	    EntityCollection results = service.RetrieveMultiple(query);
	    foreach (Entity entity in results.Entities){
	        Console.WriteLine($"name:{entity.Attributes["crda9_name"]}");
	        Console.WriteLine($"site:{entity.Attributes["crda9_site"]}");
	    }
	}

4.3 FetchExpression

  FetchExpression类
在这里插入图片描述

  1. 通过使用Fetch Xml语句拼接完成属性的查询以及过滤判断等相关操作.
  2. Dynamic 365 -> 高级查找 -> Fetch XML 使用
  3. 补充字符串使用
    a. @ 防止转义字符串, 可以省略使用/转义的操作, 单引号需要使用双引号转义. 可多行换行, 会将每行前面空格算入内
    b. $ 插值字符串, 可使用{}插入数据值, 方法类似与代替string.format(“{0}”, 数据值). 不可多行换行
    c. “”“”“” 多行字符串. 可多行换行,其每行最前列以第二个"""的那一列作为标准.
static void QueryByFetch(IOrganizationService service){
    string fetchXml = $@"<fetch version=""1.0"" output-format=""xml-platform"" mapping=""logical"" distinct=""false"">
        <entity name=""crda9_room"">
        <attribute name=""crda9_name"" />
        <attribute name=""crda9_type"" />
        <attribute name=""crda9_site"" />
        <attribute name=""crda9_detail"" />
        <filter type=""and"">
            <condition attribute=""crda9_name"" operator=""like"" value=""%北京%"" />
        </filter>
        </entity>
    </fetch>";

    FetchExpression query = new FetchExpression(fetchXml);
    EntityCollection results = service.RetrieveMultiple(query);
    foreach (Entity entity in results.Entities){
        Console.WriteLine($"name:{entity.Attributes["crda9_name"]}");
        Console.WriteLine($"site:{entity.Attributes["crda9_site"]}");
    }
}
foreach (Entity entity in results.Entities){
    Console.WriteLine($""" 
    name: {entity["crda9_name"]}
    type: {entity.GetAttributeValue<OptionSetValue>("crda9_type")?.Value} // 防止为Null
    site: {entity.GetAttributeValue<OptionSetValue>("crda9_site")?.Value} // 防止为Null
    """);
}

4.4 LINQ

  1. LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性查询语法编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1353635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CloudManager大数据本地环境标准部署文档

一、基本信息 文档目的&#xff1a;标准化、规范化Hadoop在本地化环境中部署所涉及的操作和流程&#xff0c;以便高效、高质地落地本地化环境部署的工作。 二、安装介质 FTP服务器&#xff1a; http://172.16.246.252:81/hadoopteam/cloudmanager/CDH-5.8.2-1.cdh5.8.2.p0.3…

Document对象详解

前言 在前端开发中&#xff0c;DOM&#xff08;文档对象模型&#xff09;扮演着重要的角色。它允许我们使用JavaScript来与网页文档进行交互&#xff0c;实现动态的网页效果。DOM的核心部分之一就是Document对象&#xff0c;它代表了整个HTML文档。在本篇博客中&#xff0c;我们…

C++基本语言:1.10类型转换:static_cast等

C基本语言包含10章节内容&#xff0c;存于C从入门到精通专栏 目录 一、隐式类型转换 ​编辑二、显式类型转换&#xff08;强制类型转换&#xff09; &#xff08;1&#xff09;static_cast&#xff1a;静态转换 可用于 不可用于 &#xff08;2&#xff09;dynamic_cast …

.NET国产化改造探索(一)、VMware安装银河麒麟

随着时代的发展以及近年来信创工作和…废话就不多说了&#xff0c;这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来&#xff0c;看操作。 安装银河麒麟 麒麟系统分银河麒麟和中标麒麟&#xff0c;我选择的是银河麒麟服务器版的&#xff0c;关于如何下载&#xff0c;…

长沙竟然有这么多芯片公司!

从英特尔的持续裁员&#xff0c;美满团队撤出国内市场&#xff0c;再到哲库解散&#xff0c;星际魅族放弃芯片业务&#xff0c;再到年底摩尔等公司大裁员&#xff0c;TCL控股子公司摩星半导体解散&#xff0c;都让每个ICer对市场失去信心。 目前&#xff0c;长沙集成电路产业布…

C++ 实现Windows WIFI管理器

文章目录 前言一、代码二、补充知识三、遇到的问题字符集转换 四、剩余问题总结 前言 出于项目需要&#xff0c;需要用C开发一个wifi界面&#xff0c;实现wifi扫描、wifi连接与断开、wifi密码记住的基础功能。 一、代码 话不多说&#xff0c;直接上代码。 #pragma once #inc…

Godot4.2——爬虫小游戏简单制作

目录 一、项目 二、项目功能 怪物 人物 快捷键 分数 游戏说明 提示信息 三、学习视频 UI制作 游戏教程 四、总结 一、项目 视频演示&#xff1a;Godot4爬虫小游戏简单制作_哔哩哔哩bilibili 游戏教程&#xff1a;【小猫godot4入门教程 C#版 已完结】官方入门案例 第…

利用MATLAB绘制折线图

x20:20:140;%x轴上的数据&#xff0c;第一个值代表数据开始&#xff0c;第二个值代表间隔&#xff0c;第三个值代表终止a[0.85, 2.2, 3.45, 2.65, 1.5, 1.9, 1.25]; %a数据y值plot(x,a,-*b); %线性&#xff0c;颜色&#xff0c;标记 axis([0,160,0,4]) %确定x轴与y轴框图大小 …

Redis - 挖矿病毒 db0 库 backup 反复出现解决方案

问题描述 腾讯云的服务器&#xff0c;使用 Docker 部署了 Redis 之后&#xff0c;发现 DB0 中总是出现 4 条 key&#xff0c;分别是 backup01backup02backup03backup04 而自己每次存入 db0 中的数据过一会就会被无缘无故删除掉。 原因分析 挖矿病毒 解决方案 在启动的时候…

Android测试——(下篇)

Android测试&#xff08;五&#xff09;&#xff1a;Instrumented 单元测试 Instrumented 单元测试是在真机并且可以上运行的测试&#xff0c;它利用Android框架API和支持的API&#xff08;如Android测试支持库&#xff09;。如果你的测试需要访问工具信息&#xff08;例如目标…

基于果蝇算法优化的Elman神经网络数据预测 - 附代码

基于果蝇算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于果蝇算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于果蝇优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

Jmeter的安装与快速使用(做并发测试)

1、了解 JMeter是一款开源的性能测试工具&#xff0c;它主要用于模拟多种负载条件下的应用程序或服务器的性能和功能。JMeter可以发送不同类型的请求&#xff0c;如HTTP、HTTPS、FTP、SOAP、REST等&#xff0c;并且可以模拟多种负载类型&#xff0c;例如并发用户、线程组、定时…

洛谷普及组P1044栈,题目讲解(无数论基础,纯打表找规律)

[NOIP2003 普及组] 栈 - 洛谷 我先写了个打表的代码&#xff0c;写了一个小时&#xff0c;o(╥﹏╥)o只能说我真不擅长dfs。 int n; std::unordered_map<std::string, int>map; void dfs(std::vector<int>&a, int step,std::stack<int>p, std::string …

【K8S 资源管理】声明式资源管理

目录 一、常用的发布方式 1、蓝绿发布&#xff1a; 2、金丝雀发布&#xff08;灰度发布&#xff09;&#xff1a; 3、滚动更新&#xff08;deployment的默认更新方式&#xff09;&#xff1a; 二、声明式管理方法&#xff08;yaml文件&#xff09; 1、三种发布命令&#x…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 &#x1f680;前言&#x1f680;管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 &#x1f680;在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…

三、C语言中的分支与循环—for循环 (6)

本章分支结构的学习内容如下&#xff1a; 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句&#xff08;4&#xff09;分支结构 完 本章循环结构的…

【SpringBoot框架篇】34.使用Spring Retry完成任务的重试

文章目录 简要1.为什么需要重试&#xff1f;2.添加maven依赖3.使用Retryable注解实现重试4.基于RetryTemplate模板实现重试 简要 Spring实现了一套重试机制&#xff0c;功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能&#xff0c;已经广泛应用于Spring Batch,…

Linux 进程和计划任务管理

一 内核功用&#xff1a;进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 1 程序 是一组计算机能识别和执行的指令&#xff0c;运行于电子计算机上&#xff0c;满足人们某种需求的信息化工具 用于描述进程要完成的功能&#xff0c;是控制进程执行的指令集 2…

LeetCode 82:删除排序链表中的重复元素 II

一、题目描述 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a…

B01、类加载子系统-02

JVM架构图-英文版 中文版见下图&#xff1a; 1、概述类的加载器及类加载过程 1.1、类加载子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engi…