麻烦高手帮我看看,我们用Linq做的系统系统,总是会偶尔的报错。
错误的消息为:
System.InvalidCastException: 指定的转换无效。
在 System.Data.SqlClient.SqlBuffer.get_Int32()
在 System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
在 Read_ta_SysDealWith(ObjectMaterializer`1 )
在 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
在 gyltWebMis.BusinessClass.DataAccess.ta_SysDealWithDal.Getta_SysDealWithsByNode(String nodeID, String sysID) 位置 D:\ftpfiles
\Code_v1.6\Code\gyltWebMis\BusinessClass\DataAccess\ta_SysDealWithDal.cs:行号 30
有时又报下面这种错误;错误消息为:
System.InvalidCastException: 无法将类型为“System.Int32”的对象强制转换为类型“System.String”。
在 System.Data.SqlClient.SqlBuffer.get_String()
在 System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
在 Read_ta_SysDealWith(ObjectMaterializer`1 )
在 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
在 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 在 gyltWebMis.BusinessClass.DataAccess.ta_SysDealWithDal.Getta_SysDealWithsByNode(String nodeID, String sysID) 位置 D:\ftpfiles\Code_v1.6\Code\gyltWebMis\BusinessClass\DataAccess\ta_SysDealWithDal.cs:行号 30
我的Linq代码为
try
{
DcnDataContext db=new DcnDataContext ()
return db.ta_SysDealWith.Where(r => r.CurrentNode.Equals(nodeID)).Where(r => r.sysID.Equals(sysID)).ToList();
}
catch (Exception ex)
{
logger.Debug(ex);
}
我检查了一下,模型中的字段数据类型,和数据库中的是一样的。
这种错误是偶尔报错,但是又有一定的规律,一定时间后就开始报错,但是当重新发布web文件后,又好了。
这是这个Linq对应的表结构
麻烦园子里牛人帮忙解决下,小弟急啊。