none
SetStateDynamicEntityRequest 自定义实体修改state值报错 RRS feed

  • 问题

  • 代码如下              
                    SetStateDynamicEntityRequest state = new SetStateDynamicEntityRequest();
                    Moniker mon = new Moniker();
                    mon.Id = new Guid("1111-11.....1-1111");
                    mon.Name = "my_customerentity";
                    state.State = "0";
                    state.Entity = mon;
                    state.Status = 1;
                    SetStateDynamicEntityResponse stateSet = (SetStateDynamicEntityResponse)service.Execute(state);

    执行到service.Execute()方法抛出异常,错误信息如下:
    <code>0x80048408</code>
      <description>-1 is not a valid state code on ht_hotelroomtype.</description>
      <type>Platform</type>

    请高手赐教!
    2010年3月15日 8:44

答案

  • 查资料发现问题在于state的值虽然是string类型,但不是在数据库中看到的0或1,正确的值为“Active”和“Inactive”分别对应0和1.
    不得不说微软设计上的不够友好,鬼晓得是这样啊,害的浪费我大半天时间,你搞个枚举不行啊,非要搞个string,还只认特定值,故意让人跳入陷阱。希望其他人碰到类似问题时有所帮助,少走弯路。

    • 已标记为答案 congtou 2010年3月15日 9:38
    2010年3月15日 9:32