【问题标题】:Entity Framework: Automatically Compute Members实体框架:自动计算成员
【发布时间】:2020-06-04 05:32:19
【问题描述】:

我们正在使用 Entity Framework Core。目前有一个名为Sales 的表。 任何时候插入/更新AmountAmountDividedbyTwo 列也会更新。

通常团队可以使用持久计算列,但听说有时会很慢。在应用端可以更容易计算,尤其是我们后面会有更复杂的逻辑。 (以下仅提供简单示例)

这里是脚手架实体,我们不能触摸这些(它们是自动生成的)。 Net Core 中是否有添加另一个部分类的方法,该类将计算 AmountDividedBy2。

如何做到这一点?

脚手架实体

public partial class Sales
{
    public float Amount { get; set; }
    public float AmountDividedByTwo { get; set; }
}

【问题讨论】:

  • 是否必须将AmountDividedByTwo保存在db中?
  • 当然,您始终可以添加一个包含仅 getter 计算属性的部分类。
  • 嗨@GertArnold请写答案,我可以送分,谢谢,原始脚手架实体应该保持不变

标签: c# .net entity-framework asp.net-core .net-core


【解决方案1】:

如果您使用的是 ViewModel 或 DTO,我建议您在从 ViewModel/DTO 映射到您的域对象(销售)时仅在 Mapper 级别上执行此操作。

以下是我将如何使用 Automapper 进行映射:

CreateMap<SalesViewModel, Sales>()
            .ForMember(dest => dest.Amount, opt => opt.MapFrom(src => src.Amount))
            .ForMember(dest => dest.AmountDividedByTwo, opt => opt.MapFrom(src => src.Amount/2.0))
            ;

正如 cmets 中所述,第一个映射是多余的,为了清楚起见,我写了它。

【讨论】:

  • 第一个MapFrom是多余的。
  • 我同意,我写它只是为了清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
相关资源
最近更新 更多