代码之家  ›  专栏  ›  技术社区  ›  serge

EF Core中的自动计算字段

  •  0
  • serge  · 技术社区  · 4 年前

    使用Ef5,我有下面的类需要保存

    class Bar {
      decimal A { get; set; }
      decimal B { get; set; }
    
      decimal Max { get { return Math.Max(A, B); } }
      decimal? InvA { get { return A == 0 ? null : 1 / A; } } // this is 1/A
    }
    

    我应该如何使用EF Core来管理它?我试着去做

    class Bar {
      decimal A { get; set; }
      decimal B { get; set; }
    
      decimal Max { get; private set; }
      decimal? InvA { get; private set; }
    }
    

    在我的配置中

    builder.Property(p => p.Max).ValueGeneratedOnAddOrUpdate();
    builder.Property(p => p.InvA).ValueGeneratedOnAddOrUpdate();
    

    这足够正确吗?

    0 回复  |  直到 4 年前
        1
  •  0
  •   mj1313    4 年前

    您只需使用DatabaseGenerated属性注释相应的属性:

    public class Bar
    {
        public decimal A { get; set; }
        public decimal B { get; set; }
    
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public decimal Max { get { return Math.Max(A, B); } }
    
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public decimal? InvA { get { return A == 0 ? null : 1 / A; } }
    }
    

    有关更多详细信息,请参阅 document .