【问题标题】:Dynamics 365 FakeXrm "usersettings" entity errorDynamics 365 FakeXrm“usersettings”实体错误
【发布时间】:2019-04-17 11:26:20
【问题描述】:

我的 Dynamics 365 插件中有这段代码,

 private int? RetrieveCurrentUsersSettings(IOrganizationService service)
    {
        var currentUserSettings = service.RetrieveMultiple(
            new QueryExpression("usersettings")
            {
                ColumnSet = new ColumnSet("timezonecode"),
                Criteria = new FilterExpression
                {
                    Conditions =
                    {
                        new ConditionExpression("systemuserid", ConditionOperator.EqualUserId)
                    }
                }
            }).Entities[0].ToEntity<Entity>();

        return (int?)currentUserSettings.Attributes["timezonecode"];
    }

我正在用 FakeXrm 为它编写一个 UnitTest,在调试时我在这个查询表达式中遇到了一个错误。

这是我的假 Xrm 代码。

  Entity systemUser = new Entity("systemuser");
        systemUser.Id = Guid.NewGuid();

        Entity userSettings = new Entity("usersettings");
        userSettings.Id = Guid.NewGuid();
        userSettings["timezonecode"] = 71;
        userSettings["systemuserid"] = systemUser.ToEntityReference();

        fakedContext.Initialize(new List<Entity>()
        {
            workOrder, owner, invoiceNote, userSettings
        });

问题是,如何在 FakeXrm 中创建 usersettings 实体并为其提供适当的属性。

【问题讨论】:

    标签: c# plugins dynamics-crm dynamics-365 fakexrmeasy


    【解决方案1】:

    很高兴您按照我的建议在 StackOverflow 上提问。

    无论如何,您应该指出您在 GitHub 上的 FakeXrmEasy 存储库上提出了相同的问题,并且该解决方案已通过此 answer 提供。

    长话短说,您的 UnitTest 的问题在于您缺少 fakedContext.CallerId = systemUser.ToEntityReference();,而这是必需的,因为您在查询中使用了 ConditionOperator.EqualUserId

    最好的问候,贝廷·贝贾。

    【讨论】:

      【解决方案2】:

      我找到了解决办法

                 Entity systemUser = new Entity("systemuser");
                  systemUser.Id = Guid.NewGuid();
                  fakedContext.CallerId = systemUser.ToEntityReference();
                  IOrganizationService service = fakedContext.GetOrganizationService();
                  Entity userSettings = new Entity("usersettings");
                  userSettings.Id = Guid.NewGuid();
                  userSettings["timezonecode"] = 71;
                  userSettings["systemuserid"] = systemUser.ToEntityReference();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-17
        • 1970-01-01
        • 2021-03-18
        • 1970-01-01
        • 2020-03-25
        • 2019-09-03
        相关资源
        最近更新 更多