Sha*_*aan 12 wcf enums azure visual-studio-2010 azure-table-storage
这是我的问题.定义订单的类有一个名为的属性PaymentStatus,其enum定义如下:
    public enum PaymentStatuses : int
    {
        OnDelivery = 1,
        Paid = 2,
        Processed = 3,
        Cleared = 4
    }
后来,在类本身中,属性定义非常简单:
    public PaymentStatuses? PaymentStatus { get; set; }
但是,如果我尝试将订单保存到Azure表存储,则会出现以下异常:
System.InvalidOperationException: The type Order+PaymentStatuses' has no settable properties.
在这一点上,我认为使用enum是不可能的,但快速谷歌搜索返回此:http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/7eb1a2ca-6c1b-4440-b40e-012db98ccb0a
此页面列出了两个答案,其中一个似乎忽略了这些问题,并建议enum在Azure存储中使用它很好.
现在,我不需要存储enum在Azure表存储中,我也可以存储相应的int,但是,我确实需要在WCF服务中公开此属性.
我已尝试使用属性get并从存储中set返回,并通过使用我的事件从Azure中删除此属性,但我在触发此实体的事件之前得到该异常.enumintegerWritingEntityDataContext
在这一点上,我不知所措,我不知道我还能做些什么才能在WCF中拥有这个属性enum,但是Azure存储只是int.
小智 17
枚举不受支持.即使它被定义为int,它实际上也不是Table Storage支持的整数类型.以下是支持的类型列表.枚举只是一个带有面向对象味道的整数的字符串表达式.
您可以将int存储在表存储中,然后使用Enum.Parse将其转换.
Oha*_*der 12
这是一个简单的解决方法:
public int MyEnumValue { get; set; } //for use by the Azure client libraries only
[IgnoreProperty] public MyEnum MyEnum
{
    get { return (MyEnum) MyEnumValue; }
    set { MyEnumValue = (int) value; }
}
如果可以使用简单的支持价值而不是额外的(公共!)财产,那将会更好 - 没有压倒ReadEntity/ WriteEntity当然的麻烦.我打开了一个便于使用的用户语音票据,因此您可能需要对其进行投票.
| 归档时间: | 
 | 
| 查看次数: | 5201 次 | 
| 最近记录: |