C#如何使用EF6更新以Enum作为属性的实体?

时间:2018-08-23 02:15:42

标签: c# enums entity-framework-6 iqueryable

我正在尝试更新Order实体:

public class Order
{
    public int Id { get; set; }
    public PaymentMethod PaymentMethod { get; set; }
}

PaymetMethod.cs:

public enum PaymentMethod
{
    [Description("PayPal")]
    PayPal,

    [Description("Credit Card")]
    CreditCard,

    [Description("Transfer")]
    Transfer
}

当我尝试使用以下代码更新PaymentMethod的枚举Order属性时,会发生问题:

public decimal Update(int id)
{
    IQueryable<Order> order = GetAll().Where(e => e.Id == id);
    order.Single().PaymentMethod = (PaymentMethod) 1; //Error
    return SaveChanges();
}

错误提示:

  

“无法将“订单”上的“ PaymentMethod”属性设置为   'System.String'值。您必须将此属性设置为非空值   类型为“ Bla.Bla.Bla.PaymentMethod”。 '

我有两个问题:

  1. 为什么会发生此错误?
  2. 如何解决它以实现我想要的?

0 个答案:

没有答案