.net EF核心中的自动计算字段
使用Ef5,我有以下类要持久化.net EF核心中的自动计算字段,.net,entity-framework,asp.net-core,entity-framework-core,ef-core-5.0,.net,Entity Framework,Asp.net Core,Entity Framework Core,Ef Core 5.0,使用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 { decim
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();
是否足够且正确?您可以使用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; } }
}
有关更多详细信息,请参阅。您可以将其设置为计算列:
.hascutedcolumnsql(“1/[a]持久化”)代码>