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; }
}

配置I do

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

足够和正确吗?

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

详细信息请参考文档

最新更新