初认识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"。再次调试。结果正常。

猜你喜欢

转载自blog.csdn.net/zhang_yling/article/details/78918604