Dynamics 365 FakeXrm "usersettings" ошибка сущности - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть этот кусок кода в моем плагине 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"];
    }

и я пишу для него UnitTest с помощью FakeXrm, и во время отладки я получаю сообщение об ошибке в этом выражении запроса.

Вот мой поддельный код 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
        });

Вопрос в том, как создать usersettings сущность в FakeXrm и предоставить ей надлежащие атрибуты.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я рад, что вы последовали моему предложению задать вопрос о StackOverflow.

В любом случае вы должны были указать, что вы задали тот же вопрос о GitHub в FakeXrmEasy хранилище и чторешение было предоставлено с этим ответом .

Короче говоря, проблема с вашим UnitTest заключалась в том, что вы пропустили fakedContext.CallerId = systemUser.ToEntityReference();, и это было необходимо, потому что вы использовали ConditionOperator.EqualUserId вВаш запрос.

С наилучшими пожеланиями, Бетим Бежа.

0 голосов
/ 14 ноября 2018

Я нашел решение

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