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,才能與實體類映射成功!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM