初认识LINQ的“指定的转换无效”

        使用C#重写原项目软件时(原语言VB6)。DBMS是SQL2005。昨天把基表A的一个外键类型修改了:smallint->int。结果今天在LINQ中引用视图(表A上),结果弹错“指定的转换无效”。

        在LINQ中直接引用了表A的实例,数据是正常返回的。看来问题就出在视图上。百度搜了一圈,坛子里找到一个比较靠谱的文章:是LINQ的实体类定义与数据库端不符。

        即对表A的列定义和LINQ的实体类进行比对。

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Pri_User_ID", DbType="SmallInt")]
		public System.Nullable<int> Pri_User_ID
		{
			get
			{
				return this._Pri_User_ID;
			}
			set
			{
				if ((this._Pri_User_ID != value))
				{
					this._Pri_User_ID = value;
				}
			}
		}

        问题就出在DbType="SmallInt",我已经修改表A该列是Int。可是引入LINQ还是未修改的列类型。

        即在dbml文件中删除该视图。从【服务器资源管理器】重新引入视图,为保无误,重新连接服务器,刷新表、视图。结果表A的Pri_User_ID列类型还是smallint。

        只好在 LINQ的designer.cs中修改成DbType="Int"。再次调试。结果正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值