2009-08-04 7 views
1

In meinem LINQ-zu-SQL DAL bekomme ich einen "Angegebene Cast war nicht gültig." HierWie kann ich die Typen sehen, durch die eine InvalidCastException in C# ausgelöst wird?

sind die genauen Fehler:

System.InvalidCastException was unhandled by user code Message="Specified cast is not valid." Source="System.Data.Linq" StackTrace: 
    at System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManager`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 DomainModel.Repository.Concrete.SqlClientRepository.InsertClientByUsername(String username, Client clientInfo) in C:\Documents and Settings\Owner\Desktop\CollectionTree v1.1\DomainModel\Repository\Concrete\SqlClientRepository.cs:line 99 
    at WebUI.Secure.Controllers.ClientAdminController.EditProfile(Client clientProfile) in C:\Documents and Settings\Owner\Desktop\CollectionTree v1.1\WebUI.Secure\Controllers\ClientAdminController.cs:line 69 
    at lambda_method(ExecutionScope , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) InnerException: 

Es geschieht auf meinem db.SubmitChanges().

Wie auch immer, wo in dieser Ausnahme gibt es welche Arten von Problemen beim Gießen? Es würde helfen, es einzugrenzen, wenn ich wüsste, mit welchen speziellen Typen es Probleme gab. Ich kann über die Ausnahme in Visual Studio fahren, aber ich weiß nicht, welche Eigenschaften zu betrachten sind.

Antwort

1

Ich bekomme gelegentlich eine InvalidCastException über COM-Interop und ... Ich bin SOL? Es scheint ein InvalidCastException in reinem IL erhalten die Typinformationen, aber wenn es in einer Interop-Wrapper-Konvertierung behandelt wird, überspringt es diesen Teil. Ich vermute, in den COM-Wrappern liegt das Problem daran, dass das HRESULT für E_NOINTERFACE keine Informationen über die beteiligten Typen enthält und der Wrapper keine Möglichkeit hat, zurückzugehen und das vorherige Element anzusehen, das QueryInterface gesucht hat . Selbst wenn es so wäre, müsste es nach dem Guid Ausschau halten und hoffen, dass ein Interop-Wrapper für den Typ herumliegt, um aussagekräftige Informationen daraus zu erhalten.

Wenn LINQ-to-SQL COM-Interop hinter den Kulissen verwendet, gibt es Ihre Antwort. :)

Verwandte Themen