首页 > 解决方案 > EF Core 中的自动计算字段

问题描述

使用 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();

是否足够和正确?

标签: .netentity-frameworkasp.net-coreentity-framework-coreef-core-5.0

解决方案


您可以使用 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; } }
}

有关详细信息,请参阅文档


推荐阅读