如何使用Code First填充未直接存储在Database中的属性

时间:2011-09-26 09:34:12

标签: entity-framework

我有2个实体,每个实体都由EF Code First管理,每个实体都乐于坐在自己的桌子上。 Entity_A有一个名为“SumTotal”的属性,它应该是Entity_B中与特定条件匹配的特定列的总和。

SumTotal不应该保留在数据库中,而是每次检索到Entity_A的实例时计算。

我查看了ComputedColumns,但似乎只能相对于同一个表中的列定义computedcolumn。

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

希望这个问题有道理,先谢谢

1 个答案:

答案 0 :(得分:0)

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

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