在我的开发机器上,一切正常,但是只要我将其发布到服务器上就可以了
System.InvalidCastException:指定的强制转换无效
发生在
上db.SubmitChanges();
我已查看https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=351358,但仍然会导致错误
我还运行了Windows Update,服务器上的所有内容都是最新的
答案 0 :(得分:2)
你没有说你要提交给数据库的是什么,所以我建议的任何事情都会被(受过教育的)猜测。但是,需要考虑的是检查机器与服务器的日期格式。 这可以是操作系统级别或数据库级别。
如果您的机器是英国而服务器是美国,那么如果您有一个代表英国格式日期的字符串(例如30/9/2009),它将失败,因为没有30个月击>
但是,正如您所说,这不是此特定问题,请查看开发环境与服务器之间的差异,以突出显示可能存在的问题区域。
要检查的不完整清单:
答案 1 :(得分:1)
好的,我已经解决了这个问题。
似乎问题在于我的表具有Id作为Int和主键,并且GUID是作为字段定义为唯一的,并且Guid字段是另一个表的键并被用作外键。
当我将Guid字段设置为表中的主键时,问题就消失了。
由于我们下周上线的时间限制,我没有创建一个测试项目来证明这一点
答案 2 :(得分:0)
您是否更改了模型中或数据库中任何列的数据类型?由于L2S模型中使用的数据类型与数据库中使用的数据类型不匹配,通常会抛出该异常。
或者,您有任何varchar(1)或nvarchar(1)字段吗?如果是这样,L2S设计器将默认将它们映射到System.Char。这是一个不正确的映射,因为varchar(1)或nvarchar(1)可以包含空字符串,而System.Char必须只包含一个字符,并且可能导致抛出InvalidCastExceptions(尽管在检索数据时通常会发生不匹配,而不是提交时...)
答案 3 :(得分:0)
我在致电时遇到同样的异常:
DataContext.SubmitChanges();
在改变上下文中的对象之后。并且它在开发机器和服务器中工作,我得到了相同的转换错误。
我使用字符串属性作为键在两个表之间建立了关联。
要修复,我删除了关联。
答案 4 :(得分:0)
我也有这个问题。我已经更改为我的本地数据库,忘了对生产数据库进行此更改。