EF Code首先根据范围加入

时间:2014-04-17 06:18:55

标签: entity-framework join

我对现有的SQL DB使用EF v6 Code First(因此架构相当固定)。

我需要为以下类构建一个模型,并想知道是否有一种方法来映射Reading和TemperatureCategory之间的关系,其中Reading的温度介于TemperatureCategory的下限和上限之间? / p>

public class Reading
{
    public int Id { get; set; }
    ...
    public double Temperature { get; set; }
    ...
    public virtual TemperatureCategory Category { get; set; }
}

public class TemperatureCategory
{
    public int Id { get; set; }
    public string Description { get; set; }
    public double LowerBound { get; set; }
    public double UpperBound { get; set; }
    ...          
}

非常感谢

1 个答案:

答案 0 :(得分:0)

这是一个有趣的想法,但不,你不能。联接总是基于平等。

所以你必须查询TemperatureCategory。例如

from r in context.Readings
let category = context.TemperatureCategories
                      .FirstOrDefault(c => c.LowerBound < r.Temperature
                                        && c.UpperBound >= r.Temperature)
select new { Reading = r, Category = category.Description }