網站開發(fā)項目組團隊蘇州百度 seo
文章目錄
- 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. 數(shù)據查詢的不同實現(xiàn)方式
- 4.1 QueryExpression
- 4.2 QueryByAttribute
- 4.3 FetchExpression
- 4.4 LINQ
1. IOrganization Interface
1.1 基本介紹
- IOrganization 是用于向組織提供元數(shù)據以及數(shù)據的編程訪問的接口. (Dataverse的增刪改查以及表聯(lián)系的相關操作)
//ServiceClient、CrmServiceClient 都可實現(xiàn) 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環(huán)境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); // 發(fā)起查詢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); // 查詢發(fā)送foreach (Entity entity in results.Entities){Console.WriteLine($"Id:{entity.Id}"); // 全局唯一標識符(每行數(shù)據有一個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 --> 表邏輯名(可在構造函數(shù)時直接構造)
query.ColumnSet.AddColumns("crda9_name"); // 2.ColumnSet --> 負責查詢列數(shù)
query.Criteria.AddCondition("crda9_type", ConditionOperator.Equal, 0); // 3.Criteria --> 查詢限定條件
query.AddOrder("crda9_name", OrderType.Ascending); // 4. AddOrder --> 列排序
query.TopCount = 2; // 5. TopCount --> 控制顯示的行數(shù)(與PageInfo不能同時使用)
query.PageInfo = new PagingInfo() { // 6. PageInfor --> 控制分頁PageNumber = 1, // 頁數(shù)Count = 2 // 每頁數(shù)量
};
?
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); // 先調用函數(shù)創(chuàng)建一個新學生,返回其Id唯一標識Entity entity = new Entity("crda9_student");entity.Id = id;entity["crda9_name"] = "更新后的學生";service.Update(entity);Console.WriteLine("successful update....");}
?
’
4. 數(shù)據查詢的不同實現(xiàn)方式
? QueryBase的實現(xiàn)類
? 參考文獻. QueryBase抽象類接口:QueryBase抽象類接口
4.1 QueryExpression
? QueryExpression類 – 屬性
- QueryExpression 是較為常用的數(shù)據查詢類,支持列查詢、條件判斷、實體聯(lián)系、排序等操作,
- 示例代碼見相關方法當中多行查詢
?
4.2 QueryByAttribute
? QueryByAttribute類 – 屬性
- 感覺功能可以由QueryByExpression代替,感覺這個可能更加側重通過屬性來查找判斷,
static void QueryByAttributeTest(IOrganizationService service){QueryByAttribute query = new QueryByAttribute("crda9_room") {ColumnSet = new ColumnSet("crda9_name", "crda9_site"),};query.AddAttributeValue("crda9_site", "武漢"); // 此行必須實現(xiàn)(查找滿足條件的數(shù)據)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類
- 通過使用Fetch Xml語句拼接完成屬性的查詢以及過濾判斷等相關操作.
- Dynamic 365 -> 高級查找 -> Fetch XML 使用
- 補充字符串使用
a. @ 防止轉義字符串, 可以省略使用/轉義的操作, 單引號需要使用雙引號轉義. 可多行換行, 會將每行前面空格算入內
b. $ 插值字符串, 可使用{}插入數(shù)據值, 方法類似與代替string.format(“{0}”, 數(shù)據值). 不可多行換行
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} // 防止為Nullsite: {entity.GetAttributeValue<OptionSetValue>("crda9_site")?.Value} // 防止為Null""");
}
?
4.4 LINQ
- LINQ 最明顯的“語言集成”部分就是查詢表達式。 查詢表達式采用聲明性查詢語法編寫而成。 使用查詢語法,可以用最少的代碼對數(shù)據源執(zhí)行篩選、排序和分組操作。