Dynamics 365 FakeXrm "usersettings" ошибка сущности
У меня есть этот кусок кода в моем плагине 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
});
Вопрос в том, как создать сущность пользовательских настроек в FakeXrm и предоставить ей соответствующие атрибуты.
2 ответа
Я рад, что вы последовали моему предложению задать вопрос о Stackru.
В любом случае вы должны были указать, что вы задали тот же вопрос на GitHub в репозитории FakeXrmEasy и что решение было предоставлено там с этим ответом.
Короче говоря, проблема с вашим 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();