动态 365 FakeXrm "usersettings"实体错误



我的Dynamics365插件中有这段代码

 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中创建用户设置实体并为其提供适当的属性。

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

无论如何,你应该指出,你在FakeXrmEasy存储库的GitHub上问了同样的问题,解决方案就是在那里提供的。

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

致以最良好的问候,贝蒂姆·贝贾。

我找到了一个解决方案

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

最新更新