【问题标题】:Autocalculated fields in EF CoreEF Core 中的自动计算字段
【发布时间】:2021-05-06 23:16:44
【问题描述】:

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

足够和正确吗?

【问题讨论】:

  • 您可以将其设为计算列:.HasComputedColumnSql("1/[A] PERSISTED");

标签: .net entity-framework asp.net-core entity-framework-core ef-core-5.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多