当linq 指定的转换无效

1.linq to sql 在SubmitChanges()时提示“指定转换无效”怎么办?

经查,这是一个linq2sql中的bug,具体的介绍可以看这里:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=351358

推荐的解决方法是,升级到.net 4.0或删除两个表之间的关系。


2.

错误描述:

捕捉到 System.InvalidCastException
  Message="指定的转换无效。"

  在 System.Data.SqlClient.SqlBuffer.get_Int32()
   在 System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
   在 Read_NewsM(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)
   在 TeaMvc.Models.DataAccess.NewsDA.GetByCategory(Int32 cateID) 位置 D:\zczVSCode\TeaSite\TeaMvc\Models\DataAccess\NewsDA.cs:行号 94

解决:

来回跟踪了一下,期间有一次数据读取正常。反复比对数据库表,发现是某一字段在用对象原型时是用枚举(枚举默认为int32),而数据表的数据类型是tinyint,更改 enum:byte 后,数据读取正常。

注意:在用linq时,一定要保证数据库表和对象原型的数据类型一致,要不就会出现“指定转换无效异常”。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值