Entity framework 如何使用CodeFirst填充未直接存储在数据库中的属性

Entity framework 如何使用CodeFirst填充未直接存储在数据库中的属性,entity-framework,Entity Framework,我有两个实体,每个实体首先由EF代码管理,每个实体都愉快地坐在自己的表中。实体_A有一个名为“SumTotal”的属性,它应该是实体_B中符合特定条件的特定列的总和 SumTotal不应持久保存在数据库中,而是应在每次检索实体_A的实例时进行计算 我已经查看了ComputedColumns,但是computedcolumn似乎只能相对于同一表中的列进行定义 我也有一种感觉,我需要将SumTotal设置为NotMapped(或者类似于AutoGenerated),但不知道如何将实际值设置为SumT

我有两个实体,每个实体首先由EF代码管理,每个实体都愉快地坐在自己的表中。实体_A有一个名为“SumTotal”的属性,它应该是实体_B中符合特定条件的特定列的总和

SumTotal不应持久保存在数据库中,而是应在每次检索实体_A的实例时进行计算

我已经查看了ComputedColumns,但是computedcolumn似乎只能相对于同一表中的列进行定义

我也有一种感觉,我需要将SumTotal设置为NotMapped(或者类似于AutoGenerated),但不知道如何将实际值设置为SumTotal


希望这个问题有意义,请提前感谢

您可以将结果投影到匿名对象,并将其转换为您的实体

var projection = db.EntityAs.Where(/* */)
        .Select(a => new {A = a, Sum = a.Bs.Sum(b => b.Total)})

foreach(p in projection)
{
  p.A.SumTotal = p.Sum;
}

var As = projection.Select(p => p.A);

啊,我明白了。谢谢你的回答。有没有更简洁的方法?我一直在考虑子查询、连接或类似的问题,就像是直接SQL一样。它看起来像是连接和提取所需的值