zoukankan      html  css  js  c++  java
  • EntityFramework异常The specified cast from a materialized 'System.Double' type to the 'System.Single' type is not valid.

    实体类:

        public class ReportEntity
        {
            public string FactorName { get; set; }
            public double MaxVal { get; set; }
            public double MinVal { get; set; }
            public double AvgVal { get; set; }
            public string UpdateTime { get; set; }
            public string Unit { get; set; }
            public int DecimalDigit { get; set; }
        }
    

    SQL语句

                string sqlstr = "   select b.FactorName,cast(MAX(a.Val) as float) as MaxVal,cast(MIN(a.Val) as float) as MinVal,cast(AVG(a.Val) as float) as AvgVal,"
                                + strTime + " as UpdateTime,b.Unit,b.DecimalDigit "
                                + "    from Instrument_Data a,Factor b   "
                                + " where a.UpdateTime between '" + dtBegin + "' and '" + dtEnd + "'    "
                                + " and a.FactorID = b.FactorID   "
                                + " group by b.FactorName,b.Unit, " + strTime + ",b.DecimalDigit  "
                                + " order by b.FactorName,b.Unit," + strTime + ",b.DecimalDigit  ";
    
                using (var db = new DAL.WSIPCContext())
                {
                    var result3 = db.Database.SqlQuery<Entity.ReportEntity>(sqlstr);
                    this.lsvData.Items.Clear();
                    foreach (Entity.ReportEntity i in result3)
                    {
                        ListViewItem item = new ListViewItem();
                        item.SubItems.Clear();
                        item.Text = i.UpdateTime;
                        item.SubItems.Add(i.FactorName);
                        string format = "#0.".PadRight(i.DecimalDigit + 3, '0');
                        item.SubItems.Add(i.MaxVal.TryToDoubleStr(format));
                        item.SubItems.Add(i.MinVal.TryToDoubleStr(format));
                        item.SubItems.Add(i.AvgVal.TryToDoubleStr(format));
                        item.SubItems.Add(i.Unit);
                        this.lsvData.Items.Add(item);
                    }
                }
    

    将double换成float出现错误。EF使用System.Double对应SQLServer中的float。

    重点关注:此处对SQL语句的结果也有要求,结果必须转换为float,才能与实体类映射成功!

  • 相关阅读:
    OCP-1Z0-051-V9.02-26题
    谨慎使用A2W等字符转换宏
    MySQL 递归查询 当前节点及子节点
    std count_if用法
    OCP-1Z0-053-V12.02-660题
    OCP-1Z0-053-V12.02-667题
    OCP-1Z0-053-V12.02-676题
    OCP-1Z0-051-V9.02-159题
    手工不完全恢复(非归档模式下,日志被覆盖)
    手工完全恢复(非归档模式下,日志没有被覆盖)
  • 原文地址:https://www.cnblogs.com/bmbh/p/9528037.html
Copyright © 2011-2022 走看看