你好,我需要将JS Xrm web api函数转换为C#
var opp = Xrm.Page.data.entity.getId();
Xrm.WebApi.retrieveMultipleRecords(
"dei_opportunityline",
"?$select=_dei_vendor_value,dei_multiplier,dei_iscommission,dei_opportunitylineid&$filter=_dei_opportunity_value eq " +
opp
).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
var newMulti = null;
if (result.entities[i].dei_iscommission) {
if (
result.entities[i]["_dei_vendor_value"] ==
"5fc8d03b-c41c-eb11-a813-000d3a31ed8d"
) {
if (jcimulti != null) newMulti = jcimulti;
} else {
if (commulti != null) newMulti = commulti;
}对于像.retrieveMultipleRecords、result.entitiesi.dei_iscomission这样的方法
有没有办法用C#插件来写这个?!
发布于 2021-01-16 04:54:42
您不能在C#中使用Xrm,这只在动态客户端脚本(JS)上下文中有用。ie web表单上下文。
对于服务器端(C#),您必须使用HttpClient。Sample code
HttpClient httpClient = null;
httpClient = new HttpClient();
//Default Request Headers needed to be added in the HttpClient Object
httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Set the Authorization header with the Access Token received specifying the Credentials
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
httpClient.BaseAddress = new Uri("https://yourorg.api.crmx.dynamics.com/api/data/v9.0/");
var response = httpClient.GetAsync("dei_opportunityline?$select=_dei_vendor_value,dei_multiplier,dei_iscommission,dei_opportunitylineid&$filter=_dei_opportunity_value eq <guid>").Result;
if (response.IsSuccessStatusCode)
{
var records = response.Content.ReadAsStringAsync().Result;
//you can get dei_iscomission from above records
}这是我们在控制台应用程序中使用的方式,但在插件或工作流代码中-您可以使用Org Service通过查询表达式或fetchxml来获取数据。像service.RetrieveMultiple这样的方法将满足您的需要。Read more
发布于 2021-12-01 20:41:07
只需在C#中包含crmsdk nuget包即可。然后你就可以随心所欲地连接了。请参阅docs
https://stackoverflow.com/questions/65741964
复制相似问题