基于EntityFramework

时间:2017-09-14 15:39:25

标签: linq-to-sql entity-framework-5

使用示例,我有以下两个实体。 OrderEntity包含OrderLineEntites

的集合
public class OrderEntity 
{
  public string Reference { get; set; }
  public string Description { get; set; }
  public bool Confirmed { get; set; }

  [NotMapped]
  public int OrderLineCount { get; set; }

  [InverseProperty("Order")]
  public virtual ICollection<OrderLineEntity> OrderLineEntity__OrderEntity { get; set; }
}

public class OrderLineEntity
{
  public string Name { get; set; }
  public string Description { get; set; }    
}

使用以下代码,我可以为所有已确认的订单加载所有OrderLineEntities。

DbSet<OrderEntity> orderEntity.Where(x => x.Confirmed).Include(x => x.OrderLineEntity__OrderEntity)

我需要做的是使用OrderLine记录的Count设置非映射的OrderLineCount属性(以节省实际加载它们)。

因此,对于每个加载的订单,我都有一个完全填充的实体,包括带有空OrderLine集合的[NotMapped]属性。

建议将不胜感激:) 感谢

1 个答案:

答案 0 :(得分:0)

你可以这样做,但你必须改变你的方法。您必须自己手动映射对象:

var query = from a in context.Orders.Where(x => x.Confirmed)
select new OrderEntity
{
   Reference = a.Reference,
   Description = a.Description,
   Confirmed = a.Confirmed,
   OrderLineCount = a.OrderLineEntity__OrderEntity.Count
};
return query.ToList();