保存LINQ-To-SQL实体时“指定的强制转换无效”错误

应用程序详细信息:C#,ASP.NET MVC,SQL Server 2008(相同版本和SP级别),Linq-To-SQL ORM

我正在尝试诊断我收到的exception:

“指定的演员阵容无效。” at System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManage`2.TryCreateKeyFromValues(Object [] values,V&v)
在System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object [] keyValues)
在System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type,Object [] keyValues)
在System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type,Object [] keyValues)
在System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc,Object instance)
在System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
在System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges()
在Repository.Save()等等….

问题是这只发生在我们的服务器上,而不是我们的本地开发盒上。 我已将其追溯到我们正在修改的单个属性:

event.SalesForceId = "701Q0000000AOTIIA4"; 

如果我注释掉那一行,一切正常。

我试过了:

1)打蜡服务器上的所有代码并重新部署。 同样的问题。
2)下拉服务器数据库的副本并在本地尝试。 工作良好。
3)尝试在同一个盒子上设置的另一个IIS环境。 同样的问题。
4)物理地比较(使用AdeptSQL)本地和远程模式。 没有区别。
5)validation两列(本地和远程)的数据类型是否相同。 此外,此列是另一个表的FK。 我确认两者都是相同的数据类型,直到整理。

服务器是Windows Server 2008,本地方框是Windows 7 x64。 两者都有重要的更新设置。

我唯一能想到的可能是因为数据库和Web服务器在不同的盒子上可能是一个问题? 否则,我完全难过了。

有任何想法吗?

如果该键存在于已定义的关系中并且该对象已经创建,则必须使用LINQ提供的关系路径( obj.Foo = new Foo { ... } )。 (即使对于新对象,我也会使用提供的关系)。 如果不这样做将导致 – 从经验来讲 – 在这样的“随机”错误中。

对于复合关系,可能导致该问题(或非常类似的错误)的另一个问题是反向关系列 。 但是,如果生成的代码是相同的并且DB是相同的(对于真实的,在两个帐户上),那么我怀疑第一个原因是罪魁祸首。

快乐的SQL-to-LINQ坑洼跳跃。