[英]Updating entity in Dynamics 365 using CorrelationId context
[英]Dynamics 365 FakeXrm "usersettings" entity error
我的 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實體並為其提供適當的屬性。
我很高興您按照我的建議在 StackOverflow 上提問。
無論如何,您應該指出您在 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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.