问题描述
我正在使用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
);
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 (将#修改为@)