关于Linq to SQL 的“异常详细信息: System.InvalidCastException: 指定的转换无效。”

开发环境:VS2010,SQL Server2005,Windows7,使用LINQ to SQL作为ORM

运行环境:Windows2003(IIS6),.NET 3.5 SP1,SQL Server2000

症状:开发环境下一切正常,在运行环境中出现如下错误:

 

ExpandedBlockStart.gif代码
指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidCastException: 指定的转换无效。

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

堆栈跟踪: 


[InvalidCastException: 指定的转换无效。]
   System.Data.Linq.SingleKeyManager`2.TryCreateKeyFromValues(Object[] values, V& v) +59
   System.Data.Linq.IdentityCache`2.Find(Object[] keyValues) +28
   System.Data.Linq.StandardIdentityManager.Find(MetaType type, Object[] keyValues) +23
   System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues) +48
   System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance) +142
   System.Data.Linq.ChangeProcessor.BuildEdgeMaps() +254
   System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +59
   System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +331
   System.Data.Linq.DataContext.SubmitChanges() +19
   Senparc.Web.Admin.ProductEdit.btnSubmit_Click(Object sender, EventArgs e) +847
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

 

 

 分析原因:

注意到“System.Data.Linq.IdentityCache`2.Find(Object[] keyValues) +28”这一句,说明和数据库的主键很可能有关,于是排查有关主键的所有操作。最后发现,在SQL数据库中,有两个表的主键为ID(int类型),并且没有关联;而在LINQ to SQL中,这两个表进行了关联,并且关联的字段都为非主键的Guid类型。于是猜测可能是LINQ to SQL对主键的映射出现了问题。

 

解决方法1:在LINQ to SQL的.dbml文件中(也可以可视化操作其属性),将这两个表的主键变为Guid外连字段。问题解决。

解决方法2:使数据库和LINQ to SQL同步,修改数据库中的主键,并使用LINQ to SQL重新自动生成映射。

 

结论:网上搜了一下,似乎没有提到这种处理方法,反而提到了和Guid相关的很多信息,可以比较肯定的是:这是一个.NET3.5中的bug,在4.0的环境中已经解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希存储 java_Java容器系列之HashMap的存储

Java容器系列之HashMap概要本文将结合Java源码总结HashMap的存储结构及其扩容策略,并根据这些特点给出使用HashMap的最佳实践。本文不再介绍HashMap的基本使用,有需要的请先学习下Java容器的基础知识。存储结构HashMap的核心问题是如何保证读写的速度&am…

你增长的年龄,是因为丢掉了快乐吗?

这是周末,想写一篇文章给自己的一个朋友,试看能否解开他不安的情绪。我朋友是我真的朋友几年前我还是很害羞的我,有一次开技术会上,他公开的介绍了我,我觉得是一种认可,当然,也不会有一个不喜欢…

redhat5中架设DHCP服务器与DHCP中继

作者:奇异果Wickey Email:hkb178149081163.com 实验平台:VMvare 系统:RedHat5 软件包:DHCP-3.0.5 模拟需求分析:(暂无) 拓扑图: 1. 配置DHCPServer IP与GW 2. 安装DHCP…

MCU HardFault问题查找和破解方法

一、HardFault产生原因和常规分析方法二、HardFault解决方法分析三、HardFault回溯的原理四、操作分析流程:1. 心里明白徒手分析法2. CmBacktrace 天龙大法五、总结一、HardFault产生原因和常规分析方法在嵌入式开发中,偶尔会遇到Hard Fault死机的异常&…

ASP.NET Core的身份认证框架IdentityServer4--入门【转】

原文地址 Identity Server 4是IdentityServer的最新版本,它是流行的OpenID Connect和OAuth Framework for .NET,为ASP.NET Core和.NET Core进行了更新和重新设计。在本文中,我们将快速了解IdentityServer 4存在的原因,然后直接进入…

Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈…

内核抢占会让内核调度更好吗?

大家好,我是老吴的朋友,这篇文章转发自老吴的公众号。今天要分享的是抢占相关的基础知识。本文以内核抢占为引子,概述一下 Linux 抢占的图景。我尽量避开细节问题和源码分析。什么是内核抢占?别急,咱们慢慢来。先理解抢…

php 解压dat,电脑微信dat文件怎么打开

微信dat转码软件使用操作说明在线解码,各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢?这里会为大家一一道来。问题1 :如果下载失败怎么办?请先检查网络,软件并没有放在我的网站上,而是放在大厂七…

优雅地用宏实现环形缓冲区

之前写的环行缓冲区文章柔性数组和环形队列之间的故事C语言,环形队列循环缓冲区是嵌入式软件工程师在日常开发过程中的关键组件。多年来,互联网上出现了许多不同的循环缓冲区实现和示例。我非常喜欢这个模块,可以GitHub上找到这个开源的 CBUF…

XP访问Linux共享错误提示

XP访问RHEL5共享错误提示 [rootlocalhost samba]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 …

一个漂亮的电子钟,纪念我们逝去的青春(含软硬件资料)

来源:阿莫论坛,作者:humancn微信公众号:芯片之家(ID:chiphome-dy)公众号不少粉丝,大一大二做的第一个项目,都是电子时钟吧,非常经典的STC89C52DS1302数码管组…

JZOJ 5776. 【NOIP2008模拟】小x游世界树

5776. 【NOIP2008模拟】小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms Memory Limits: 262144 KB Detailed Limits Goto ProblemSetDescription 小x得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据…

SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?...

如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。 1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智…

java图形界面颜色随机变换,JavaScript实现鼠标移入随机变换颜色

大家好!今天分享一个在 JavaScript中,实现一个鼠标移入可以随机变换颜色。/* 这里定义一下div(块元素)已下span 标签的宽.高.边框线以及边框线的颜色*/span{display: block;width: 80px;height: 80px;border: 1px solid #000000;float: left;}var adocum…

Vscode 用Filter Line看日志,很爽

因为某种原因,我抛弃了Notepad然后一直没有找到一个比较好的日志查看软件,最近发现Vscode里面的这个插件不错,给大家推荐一下。中文详情链接:https://everettjf.github.io/2018/07/03/vscode-extension-filter-line/推荐阅读&…

zblog php 七牛缩略图,zblog中Gravatar头像不显示解决方法

解决zblog博客Gravatar头像不显示方法一第一个,解决zblog博客Gravatar头像不显示解决方法是对其进行修复操作。造成不显示的原因主要是Gravatar头像地址错误。所以,我们需要对头像地址进行更改。1、进入自己的博客后台。2、找到现在使用的主题模板中的&a…

SpringCloud学习--微服务架构

目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构?    软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系…

工作九年的硬件工程师,想对我们说些什么?

△向上生长, TO BE TO UP. 10万工程师的成长充电站△作者:徐新文,排版:晓宇微信公众号:芯片之家(ID:chiphome-dy)时光荏苒,岁月如梭,转眼就在硬件工程师的岗位上工作了九…

StringBuffer/StringBuilder/String的区别

1、在执行速度上:Stringbuilder->Stringbuffer->String 2、String是字符串常量 Stringbuffer是字符串变量 Stringbuilder是字符串变量 有可能我们会疑惑String怎么是字符串变量。看以下代码: String str adc; str str “ef”&#x…

你知道kernel version的实现原理和细节吗

引言kernel 启动时通常会看到下面第二行信息的内容,它们代表了当前 kernel 的版本、编译工具版本、编译环境等信息。Booting Linux on physical CPU 0x0 Linux version 5.4.124 (funnyfunny) (gcc version 6.5.0 (Linaro GCC 6.5-2018.12)) #30 SMP Sat Sep 11 11:1…