【问题标题】:Cant get GUID from newly created Record无法从新创建的记录中获取 GUID
【发布时间】:2019-05-07 14:44:18
【问题描述】:

随行:

Guid AlertsId = service.Create(NewAlert);
NewAlert["new_alertguid"] = "Spennende: " + AlertsId.ToString();

我正在尝试获取新创建的 GUID。 但什么也没有发生。我没有得到 GUID,工作流程也没有失败。 它也没有在现场写“Spennende”。但我不知道如何找出我做错了什么。

我能做些什么来解决这个问题。大家有没有发现什么问题?

试图在同一字段中插入其他值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;

namespace WordCountWorkflow
{
    public class WordCount : CodeActivity
    {



        [Input("Hvilket felt skal endres")]
        public InArgument<string> FieldToChange { get; set; }

        [RequiredArgument]
        [Input("Tekst som skal telles")]
        public InArgument<string> InputText { get; set; }

        [Output("Antall tegn")]
        public OutArgument<int> CountOfWords { get; set; }


        protected override void Execute(CodeActivityContext context)
        {
            this.CountOfWords.Set(
                context,
                this.InputText.Get<string>(context).Split(
                    new char[] { ' ', '\r', '\n' },
                    StringSplitOptions.RemoveEmptyEntries).Length);
            //------------------
            ITracingService tracingService = context.GetExtension<ITracingService>();
            IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
            IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
            Entity NewAlert = new Entity("new_alerts");
            NewAlert["new_name"] = "Navn på alert";
            NewAlert["new_message"] = "Her er beskjed";
            Guid AlertsId = service.Create(NewAlert);
            NewAlert["new_alertguid"] = "Spennende: " + AlertsId.ToString();
        }
    }
}

我试着改成这个:

    ITracingService tracingService = context.GetExtension<ITracingService>();
    IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
    IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
    IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
    Entity NewAlert = new Entity("new_alerts");
    Guid AlertsId = service.Create(NewAlert);
    NewAlert["new_name"] = "Navn på alert";
    NewAlert["new_message"] = "Her er beskjed " + AlertsId.ToString();
    NewAlert["new_shortmessage"] = "Spennende: " + AlertsId.ToString();

但随后一切都停止了。并且没有填写任何字段。

【问题讨论】:

  • 你在AlertsId变量中得到了什么?
  • 它是空白的。实际上,它也没有在该领域写“Spennende”。但它并没有失败,所以我看不到任何错误。
  • 那么你需要查看服务代码,看看那里发生了什么。
  • 我在哪里可以找到它?我对开发工作流程完全陌生。这是我的第一个。
  • 我认为它与 Guid AlertsId = service.Create(NewAlert);

标签: c# dynamics-crm workflow


【解决方案1】:

您可以使用以下代码为记录创建 guid

Entity NewAlert = new Entity("new_alerts");
NewAlert.Id = Guid.NewGuid();
NewAlert["new_name"] = "Navn på alert";
NewAlert["new_message"] = "Her er beskjed";            
NewAlert["new_alertguid"] = "Spennende: " + NewAlert.Id.ToString();
Guid AlertsId = service.Create(NewAlert);

或者你可以创建新对象然后更新它。

Entity NewAlert = new Entity("new_alerts");
NewAlert["new_name"] = "Navn på alert";
NewAlert["new_message"] = "Her er beskjed";
Guid AlertsId = service.Create(NewAlert);        
Entity CompleteNewAlert = new Entity("new_alerts",AlertsId );
CompleteNewAlert ["new_alertguid"] = "Spennende: " + AlertsId.ToString();
service.Update(CompleteNewAlert );

【讨论】:

  • 我尝试了上面的那个,但后来我只知道:“Spennende:00000000-0000-0000-0000-000000000000”。实际上没有 GUID。但我们更接近:-)
  • 试试下面的那个会更容易
  • 我会在我再次使用电脑时尝试一下。但是为什么上面的那个不工作呢?
  • 第一个也开始工作了。显然我上次做错了什么。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2021-12-23
  • 2021-08-01
  • 1970-01-01
相关资源
最近更新 更多