WCF枚举属性 出错 wcf 枚举的一个陷阱

  [DataContract]
    public enum GetMailType
    {
      
        [EnumMember]
        DDA=1,
        [EnumMember]
        KVK=2,
        [EnumMember]
        BTW=3,
    }

我们有一个类。放在数据库当中用的

[DataContract(IsReference = true)]
    public class UnaddressConfig
    {
        [DataMember]
        public int GetMailTypeID
        { get; set; }
 
[NotMapped]
        [DataMember]
        public GetMailType GetMailType
        {
            get { return (GetMailType)GetMailTypeID; }
            set { GetMailTypeID = (int)value; }
        }
}

我们系统当中有一个方法 Save(UnaddressConfig config)
客户端添加WCF引用后 调用这个方法的时候可能会造成。
config.GetMailType=GetMailType.DDA

在服务端我们会发现在这个值可能是0

为什么会这样呢?

 因为

  GetMailTypeID 这个值就是0.

解决的方法是把 GetMailTypeID的Atribute

[DataMember]
去掉。 因为我们客户端实际也不需要这个。只是数据库哪边需要。(如果 Entity framework哪边直接支持枚举就更好了).

原文地址:https://www.cnblogs.com/lovebanyi/p/2377125.html