1

我正在尝试将电子邮件状态代码从已完成更改为草稿以更改电子邮件主题。为此,我首先尝试这样做(因为在状态码为 EmailState.Open 之前我无法更改状态码

entityEmail["statecode"] = new OptionSetValue((int)EmailState.Open);
service.Update(entityEmail);

但放弃了错误“Specified cast is not valid.”,因此使用来自http://msdn.microsoft.com/en-us/library/hh155312.aspx的数据尝试了这种方法

UpdateStateValueRequest updateStateValue = new UpdateStateValueRequest
{
  AttributeLogicalName = "statecode",
  EntityLogicalName = Email.EntityLogicalName,
  Value = 0,
  Label = new Label("Open", 0x0409) // 0x0409=en-us  
};
service.Execute(updateStateValue);

但收到此错误“字典中不存在给定的键。”

谁能告诉我为什么这两种方法都行不通?状态为 Completed 时是否无法更改电子邮件主题?

在此先感谢迈克。

4

2 回答 2

1

我一直使用SetEntityState请求,但通常我不使用活动,我正在尝试禁用记录。

您无法使用标准更新消息更新对象的状态,但您会遇到一个有趣的错误,而不是正常错误。我猜您在“事件前”阶段注册了一个插件,该插件会引发您在两种情况下都看到的异常。尝试禁用您拥有的任何插件,看看您的更新语句是否有效。

于 2013-10-22T18:09:14.433 回答
0

我在 Scribe 和 C# 上遇到了类似的问题,不知道它是否会有所帮助,但作为一般规则,当您更改状态码时,也会更改状态码,反之亦然。

当您的状态码更改时,当前状态码将无效,因此它会中断。

于 2013-10-23T08:48:14.707 回答