开发者

How to populate a property that is not directly stored in Database with CodeFirst

I have 2 Entities, each of which is managed by EF Code First, and each happily sitting in its own table. Entity_A has a property, called "SumTotal", which should be the sum of a specific column in Entity_B that matches a certain criteria.

SumTotal should not be persisted in the DB, but rather calculated each time an instance of Entity_A is retrieved.

I have looked at ComputedColumns, but it appears that the computedcolumn can onl开发者_运维百科y be defined relative to columns in the same table.

I also have a feeling that I need to set SumTotal to NotMapped (or something similar with AutoGenerated), but dont know how to get the actual value into SumTotal.

Hope this question makes sense, thanks in advance


You can project the results to an anonymous object and transform that it to your entity

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜