【问题标题】:Entity Framework model with a property indicating count of one to many relationship具有指示一对多关系计数的属性的实体框架模型
【发布时间】:2016-05-27 18:21:21
【问题描述】:

假设我有以下代码优先 EF 模型:

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

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

我试图避免向数据库中添加我必须管理的列。

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

【问题讨论】:

    标签: c# entity-framework code-first


    【解决方案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);
    }
    

    【讨论】:

    • 抱歉,我忘了补充一点,无论它们是否有轮胎,我都需要取回一批卡车,但作为其中的一部分,我需要知道每个实体是否有轮胎。在某些情况下,我可能需要 100 或 1000 个。
    【解决方案2】:
    context.Trucks
        .Select( t => new 
        {
            Truck = t, 
            HasTires = t.Tires.Any()
        } );
    

    【讨论】:

      【解决方案3】:

      你也可以试试这个

      在这种情况下,您可以使用Any 而不是Count
      这只会用一个轮胎获取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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多