ToList中的“ InvalidCastException指定的类型转换无效”

问题描述

我正在使用MVC 4 C#应用程序 在其中显示oracle表的记录,但是在执行该表时会抛出此异常, 我从来没有遇到过这个问题。

这是我的代码:

    public ActionResult Index()
    {
        Entities db = new Entities();
        IList<MVC_PCMonitoring_Dash.TB_OP_PC_MONITORING_V4> PCList = new List<MVC_PCMonitoring_Dash.TB_OP_PC_MONITORING_V4>();
        var query = from qrs in db.TB_OP_PC_MONITORING_V4 select qrs;
        var listdata = query.ToList();  // <-- This is where the exception occurs "Specified cast is not valid": 

        foreach (var pcdata in listdata)
        {
            PCList.Add(new TB_OP_PC_MONITORING_V4()
            {
                IDPC = pcdata.IDPC,LINE_CODE = pcdata.LINE_CODE,PROCESS_NAME = pcdata.PROCESS_NAME,PING_STATUS = pcdata.PING_STATUS,SFC_STATUS = pcdata.SFC_STATUS,FL_STATUS = pcdata.FL_STATUS,RAS_STATUS = pcdata.RAS_STATUS,PC_UTC = pcdata.PC_UTC,PC_PROCESSOR_STATUS = pcdata.PC_PROCESSOR_STATUS,PC_RAM_STATUS = pcdata.PC_RAM_STATUS,PC_VERSION = pcdata.PC_VERSION,IPADDRESS = pcdata.IPADDRESS,});
        }
        return View(PCList);
    }

您能告诉我是什么导致错误或我在做什么错吗? 预先感谢

编辑:

添加Oracle表语法

    -- Create table
create table TB_OP_PC_MONITORING_V4
(
  idpc                NUMBER not null,ipaddress           VARCHAR2(20) not null,pc_name             VARCHAR2(30) not null,pc_mac              VARCHAR2(20),pc_model            VARCHAR2(30),pc_sn               VARCHAR2(30),pc_mfg              VARCHAR2(30),pc_processor        VARCHAR2(70),pc_speed            VARCHAR2(15),pc_ram              VARCHAR2(8),pc_core             VARCHAR2(2),pc_username         VARCHAR2(50),pc_version          VARCHAR2(50),pc_servicepack      VARCHAR2(8),pc_arch             VARCHAR2(8),pc_serialkey        VARCHAR2(30),pc_reg_user         VARCHAR2(100),pc_install_date     VARCHAR2(18),line_code           VARCHAR2(20),process_name        VARCHAR2(60),order_rate          NUMBER,machine_type        VARCHAR2(10),create_date         DATE,sfc_status          VARCHAR2(2),update_sfc          DATE,sys_update_sfc      DATE,time_out_sfc        NUMBER,fl_status           VARCHAR2(2),update_fl           DATE,sys_update_fl       DATE,time_out_fl         NUMBER,ping_status         VARCHAR2(2),update_ping         DATE,sys_update_ping     DATE,time_out_ping       NUMBER,raws                VARCHAR2(2),pc_processor_status VARCHAR2(3),pc_ram_status       VARCHAR2(3),pc_utc              VARCHAR2(15),ras_status          VARCHAR2(2),update_ras          DATE,sys_update_ras      DATE,time_out_ras        NUMBER
)
tablespace TS_DATA
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 1M
    minextents 1
    maxextents unlimited
  );

问题:

enter image description here

EDIT2:

EntityFramework表 TB_OP_PC_MONITORING_V4 在创建Model.edmx时生成

  namespace MVC_PCMonitoring_Dash
    {
        using System;
        using System.Collections.Generic;
        
        public partial class TB_OP_PC_MONITORING_V4
        {
            public decimal IDPC { get; set; }
            public string IPADDRESS { get; set; }
            public string PC_NAME { get; set; }
            public string PC_MAC { get; set; }
            public string PC_MODEL { get; set; }
            public string PC_SN { get; set; }
            public string PC_MFG { get; set; }
            public string PC_PROCESSOR { get; set; }
            public string PC_SPEED { get; set; }
            public string PC_RAM { get; set; }
            public string PC_CORE { get; set; }
            public string PC_USERNAME { get; set; }
            public string PC_VERSION { get; set; }
            public string PC_SERVICEPACK { get; set; }
            public string PC_ARCH { get; set; }
            public string PC_SERIALKEY { get; set; }
            public string PC_REG_USER { get; set; }
            public string PC_INSTALL_DATE { get; set; }
            public string LINE_CODE { get; set; }
            public string PROCESS_NAME { get; set; }
            public Nullable<decimal> ORDER_RATE { get; set; }
            public string MACHINE_TYPE { get; set; }
            public Nullable<System.DateTime> CREATE_DATE { get; set; }
            public string SFC_STATUS { get; set; }
            public Nullable<System.DateTime> UPDATE_SFC { get; set; }
            public Nullable<System.DateTime> SYS_UPDATE_SFC { get; set; }
            public Nullable<decimal> TIME_OUT_SFC { get; set; }
            public string FL_STATUS { get; set; }
            public Nullable<System.DateTime> UPDATE_FL { get; set; }
            public Nullable<System.DateTime> SYS_UPDATE_FL { get; set; }
            public Nullable<decimal> TIME_OUT_FL { get; set; }
            public string PING_STATUS { get; set; }
            public Nullable<System.DateTime> UPDATE_PING { get; set; }
            public Nullable<System.DateTime> SYS_UPDATE_PING { get; set; }
            public Nullable<decimal> TIME_OUT_PING { get; set; }
            public string RAWS { get; set; }
            public string PC_PROCESSOR_STATUS { get; set; }
            public string PC_RAM_STATUS { get; set; }
            public string PC_UTC { get; set; }
            public string RAS_STATUS { get; set; }
            public Nullable<System.DateTime> UPDATE_RAS { get; set; }
            public Nullable<System.DateTime> SYS_UPDATE_RAS { get; set; }
            public Nullable<decimal> TIME_OUT_RAS { get; set; }
        }
    }

Model1.Context

namespace MVC_PCMonitoring_Dash
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class Entities : DbContext
    {
        public Entities()
            : base("name=Entities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public DbSet<TB_TEST> TB_TEST { get; set; }
        public DbSet<TB_OP_PC_MONITORING_V4> TB_OP_PC_MONITORING_V4 { get; set; }
    }
}

EDIT3:

基于结果更新字段的Oracle过程

create or replace procedure SP_DASHBOARD_PINGSTATUS is
begin
  declare

  BEGIN
       Update rsmes.tb_op_pc_monitoring_v4 t
        set t.sys_update_ping = sysdate,t.sys_update_sfc = sysdate,t.sys_update_fl = sysdate,t.sys_update_ras = sysdate,t.pc_utc = (select 'UTC' || substr(current_timestamp,'30','6')timezonenumber from dual);
   for c in (select ipaddress,((SYS_UPDATE_PING - UPDATE_PING)*60*60*24) as PING_RESULT from TB_OP_PC_MONITORING_V4)
     loop
        Update rsmes.tb_op_pc_monitoring_v4 tg
         set tg.ping_status =
                case
                  when (SYSDATE - tg.update_ping) * 60 * 60 * 24 <= 5 then 'OK'
                  else 'NG'
                end,tg.time_out_ping = (SYSDATE - tg.update_ping) * 60 * 60 * 24;
       end loop;
   for d in (select ipaddress,((SYS_UPDATE_SFC - UPDATE_SFC)*60*60*24) as SFC_RESULT from TB_OP_PC_MONITORING_V4)
     loop
        Update rsmes.tb_op_pc_monitoring_v4 tg2
         set tg2.sfc_status =
                case
                  when (SYSDATE - tg2.update_sfc) * 60 * 60 * 24 <= 5 then 'OK'
                  else 'NG'
                end,tg2.time_out_sfc = (SYSDATE - tg2.update_sfc) * 60 * 60 * 24;
       end loop;
   for e in (select ipaddress,((SYS_UPDATE_FL - UPDATE_FL)*60*60*24) as FL_RESULT from TB_OP_PC_MONITORING_V4)
     loop
        Update rsmes.tb_op_pc_monitoring_v4 tg3
         set tg3.fl_status =
                case
                  when (SYSDATE - tg3.update_fl) * 60 * 60 * 24 <= 5 then 'OK'
                  else 'NG'
                end,tg3.time_out_fl = (SYSDATE - tg3.update_fl) * 60 * 60 * 24;
       end loop;
   for f in (select ipaddress,((SYS_UPDATE_RAS - UPDATE_RAS)*60*60*24) as RAS_RESULT from TB_OP_PC_MONITORING_V4)
     loop
        Update rsmes.tb_op_pc_monitoring_v4 tg3
         set tg3.ras_status =
                case
                  when (SYSDATE - tg3.update_ras) * 60 * 60 * 24 <= 5 then 'OK'
                  else 'NG'
                end,tg3.time_out_ras = (SYSDATE - tg3.update_ras) * 60 * 60 * 24;
       end loop;
        commit;
  END;
end SP_DASHBOARD_PINGSTATUS;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...