Szczegóły App: C#, ASP.NET MVC, SQL Server 2008 (tej samej wersji & poziom SP), LINQ do SQL ORM"Określone rzutowanie jest nieprawidłowe" Błąd podczas zapisywania LINQ do SQL podmiot
Próbuję zdiagnozować wyjątek Otrzymuję:
"Specified cast is not valid." at System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManage`2.TryCreateKeyFromValues(Object[] values, V& v)
at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
at System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges()
at Repository.Save() at etc....
problemem jest to, że występuje tylko na naszych serwerach, a nie na naszych lokalnych polach rozwojowych. Śledziłem to do jednej właściwości, którą modyfikujemy:
event.SalesForceId = "701Q0000000AOTIIA4";
Jeśli skomentuję tę linię, wszystko działa poprawnie.
Próbowałem:
1) woskowanie cały kod na serwerze i przesunięcia. Ten sam problem.
2) Wyciąganie kopii bazy danych serwera i wypróbowywanie jej lokalnie. Działa w porządku.
3) Próbuję innego środowiska IIS, które ustawiliśmy w tym samym oknie. Ten sam problem.
4) Fizyczne porównywanie (za pomocą AdeptSQL) zarówno schematów lokalnych, jak i zdalnych. Bez różnic.
5) Weryfikacja typów danych obu kolumn (lokalnych i zdalnych) jest taka sama. Również ta kolumna jest FK do innej tabeli. Zweryfikowałem, że oba są tego samego typu danych, aż do sortowania.
Serwer to Windows Server 2008, a lokalny to Windows 7 x64. Oba mają ustawione wszystkie ważne aktualizacje.
Jedyne o czym mogę myśleć to być może dlatego, że baza danych i serwer WWW znajdują się na różnych polach, które mogą być problemem? W przeciwnym razie jestem kompletnie zakłopotany.
Wszelkie pomysły?
Jaki jest typ "V" w tym ostatnim wywołaniu? Użyj debuggera, aby to zobaczyć. – leppie
Również .NET 3.5 lub 4.0? – leppie
To jest .net 3.5, a nie 4, ze wszystkimi zastosowanymi dodatkami Service Pack. Ponadto nie mogę użyć debuggera, aby go przejrzeć, ponieważ znajduje się on na serwerze. Zdalne debugowanie również nie wchodzi w grę. – gcaprio