实体框架模型,其属性指示一对多关系的计数

时间:2016-05-27 18:21:22

标签: c# entity-framework code-first

假设我的第一个EF模型有以下代码:

public class Truck { public ICollection<Tire> Tires { get; set; } }

我如何根据卡车是否有轮胎来创建由数据库计算的属性HasTires?我的目标是,我希望能够确定卡车是否至少有一个轮胎而不装载轮胎物体。

我正试图避免在数据库中添加一个我必须管理的列。

编辑:我还应该指出,我需要回收卡车,可能是100或1000。

3 个答案:

答案 0 :(得分:1)

你可以买到至少有1个轮胎的整辆卡车

var TrucksWithAtLeastOneTire = context.Trucks.Where(g=> g.Tires.Count() > 0);

或仅检查特定卡车是否至少有一个轮胎:

private bool TruckHasTire(int truckId) {
  return context.Trucks.Any(g=> g.Id == TruckId && g.Tires.Count() > 0);
}

答案 1 :(得分:1)

context.Trucks
    .Select( t => new 
    {
        Truck = t, 
        HasTires = t.Tires.Any()
    } );

答案 2 :(得分:0)

你也可以试试这个

  

在此方案中,您可以使用Count而不是Any   
这只能用一个轮胎取Trucks

var TrucksWithAtLeastOneTire = context.Trucks.Where(g=> g.Tires.Any());

或者你可以投射Trucks and Tires

var TruckAndTires = context.Trucks
                           .Where(g=> g.Tires.Any())
                           .Select(trk=>
                           {
                              truck = trk,
                              tires = trk.Tires,   
                           }.ToList();