Dynamics 365 FakeXrm“用户设置”实体错误

时间:2018-11-14 13:18:01

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

我的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 实体并为其提供适当的属性。

2 个答案:

答案 0 :(得分:1)

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

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

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

最好的问候,贝蒂姆·贝雅。

答案 1 :(得分:0)

我找到了解决方法

           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();