代码之家  ›  专栏  ›  技术社区  ›  TJF

实体框架-查询可空列时出现问题

  •  2
  • TJF  · 技术社区  · 16 年前

    从具有可为空tinyint列的表中查询数据时出现问题。
    问题似乎是查询的生成方式如下:

    AND ( CAST( [Extent1].[PositionEffect] AS int) = @p__linq__3)
    

    =>@p_uu linq_uuu 3=空

    如果手动运行该查询,则不会显示任何结果。但是,当我将查询替换为:

    AND ([Extent1].[PositionEffect] IS @p__linq__3)
    

    它显示了预期的结果。
    我的C查询如下:

     context.Allocations.Where(x => ... && x.PositionEffect == (byte?) positionEffect)
    

    那么,为什么实体框架在这里生成了不正确的查询,并且有什么方法可以解决这个问题?

    谢谢,

    汤姆

    1 回复  |  直到 16 年前
        1
  •  1
  •   TJF    16 年前

    正如A所指出的,这似乎是实体框架中报告的错误,生成正确查询的解决方法是:

     (positionEffect == null ? x.PositionEffect == null : x.PositionEffect == (byte?)positionEffect)