代码之家  ›  专栏  ›  技术社区  ›  7hibault

为什么在尝试使用实体框架执行查询时指定的强制转换无效?

  •  0
  • 7hibault  · 技术社区  · 8 年前

    从这个SQL表MY\ u表(类型是 DATE 和 NUMBER )...

    COL1   DATE     NOT NULLABLE
    COL2   NUMBER   NOT NULLABLE
    COL3   NUMBER   NULLABLE
    COL4   NUMBER   NULLABLE
    

    public partial class MY_TABLE 
    {
        public System.DateTime COL1 { get; set; }
        public decimal COL2 { get; set; }
        public Nullable<decimal> COL3 { get; set; }
        public Nullable<decimal> COL4 { get; set; }
    }
    

    ... 我试着用LINQ查询。。。

    List<MY_TABLE> items = dbContext.MY_TABLE.Where(el => el.COL2 == 1).ToList();
    

    ... 没有成功。。。

    Specified cast is not valid
    

    我有

    当尝试将查询映射到其内部对象时,LINQ似乎失败了,因为FirstOrDefault、ToList等都会产生相同的错误。为什么?

    1 回复  |  直到 8 年前
        1
  •  0
  •   7hibault    8 年前

    原来这个问题来自实体框架的十进制精度。COL3和COL4在数据库中有太多的小数,这导致强制转换失败。

    我将数据库中的小数取整,以便能够在我的对象中得到结果。