【发布时间】:2011-01-26 04:14:05
【问题描述】:
应用详情: C#、ASP.NET MVC、SQL Server 2008(相同版本和 SP 级别)、Linq-To-SQL ORM
我正在尝试诊断我收到的异常:
“指定的演员表无效。” 在 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 类型,Object[] keyValues)
在 System.Data.Linq.CommonDataServices.GetCachedObject(MetaType 类型,Object[] keyValues)
在 System.Data.Linq.ChangeProcessor.GetOtherItem(元关联关联,对象实例)
在 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)验证两列(本地和远程)的数据类型是否相同。此外,此列是另一个表的 FK。我验证了两者都是相同的数据类型,直到排序规则。
服务器是 Windows Server 2008,本地机器是 Windows 7 x64。两者都有所有重要的更新设置。
我唯一能想到的可能是因为数据库和 Web 服务器位于不同的盒子上,这可能是个问题?否则,我完全被难住了。
有什么想法吗?
【问题讨论】:
-
最后一次通话中
V的类型是什么?使用调试器查看。 -
这是应用了所有服务包的 .net 3.5,而不是 4。另外,我不能使用调试器来单步调试它,因为它在服务器上。远程调试也不是一种选择。
标签: c# asp.net-mvc sql-server-2008 linq-to-sql