簡體   English   中英

CRM v9-使用C#代碼從CRM實體中刪除基於ID的記錄

[英]CRM v9 - Delete records based on ID from CRM Entity using C# Code

我使用的是CRM版本9.0,我想通過C#刪除CRM中具有相同ID的所有記錄。

我想要實現這樣的功能(我提供一個SQL Query示例僅供參考)

Delete from entityName where id = @id

目前,我正在使用以下C#代碼在CRM中創建記錄

dictionary.Add("code", new CrmDataTypeWrapper(code, CrmFieldType.Raw));
dictionary.Add("id", new CrmDataTypeWrapper(id, CrmFieldType.Raw));
Guid EvntId = _client.CrmInterface.CreateNewRecord("entityname", dictionary, "", false, new System.Guid());

現在,我想在此邏輯之前編寫一個代碼塊,如果傳遞的ID存在,則會刪除所有記錄。

為了刪除CRM中的實體-您必須首先獲取該實體以獲得該實體的GUID

IOrganizationService接口包含Delete方法,該方法要求實體類型( LogicalName )和CRM創建的實體的GUID。

這是我們的方法。

QueryExpression oppQuery = new QueryExpression("opportunity");
oppQuery.ColumnSet = new ColumnSet(new string[] { "opportunityid" });
oppQuery.Criteria.AddCondition(new ConditionExpression("parentcontactid", ConditionOperator.Equal, contact.Id));

EntityCollection opportunities = crmSvc.RetrieveMultiple(oppQuery);

foreach (var opportunity in opportunities.Entities)
{
    service.Delete("opportunity", opportunity.Id);
}

這意味着您可以根據條件刪除實體,方法是先根據條件獲取需要的實體。

oppQuery.Criteria.AddCondition(new ConditionExpression("<your id field>", ConditionOperator.Equal, <your id>));

在此行上,指定用於刪除相關實體的條件。

如果不確定這些ID是否在Dynamics中存在,則應嘗試捕獲Delete嘗試,因為如果嘗試刪除Dynamics中不存在的記錄,Dynamics將拋出FaultException

var ids = new Collection<Guid>();
foreach (var id in ids)
{
    try
    {
        _service.Delete("[entityName]", id);
    }
    catch (FaultException)
    {
        continue;
    }
}

贊美Adriani6的答案:

我認為您正在嘗試刪除一組具有特定字段值的記錄。 但是該字段被命名為id ,而不是主鍵。

在Dynamics CRM中沒有以下SQL查詢的等效項。

Delete from entityName where id = @id

您必須使用service.RetrieveMultiple獲取與此非主鍵條件相匹配的所有實體記錄,然后遍歷每個記錄的結果集以發出service.Delete請求與主鍵。

QueryExpression query = new QueryExpression("entityName");
query.ColumnSet = new ColumnSet(new string[] { "eventId", "code"});
query.Criteria.AddCondition(new ConditionExpression("id", ConditionOperator.Equal, id));

EntityCollection events = service.RetrieveMultiple(query);

foreach (var event in events.Entities)
{
    service.Delete("entityName", event.Id);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM