Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why am I getting "Invalid Cast" when using Linq to SQL?

Tags:

linq-to-sql

I am a bit of a newbie when it comes to Linq to SQL but I hope you can help out. I've written the following Linq to SQL statement with Extension Methods:

Cedb.ClassEvents.Where(c => c.ClassID == 1).Select(c => c).Single()

Where Cedb is the Datacontext, ClassEvents is a table (for classes and events being held at a facility) and ClassID is a unique integer key.

This query runs fine in LinqPad (without Cedb). When it returns, it says that the return type is "ClassEvent". In Intellisense in Visual studio, it tells me that the return type of this query is ClassEvent (created in my data model). However, when I try to place the results in a variable:

var classEvent = Cedc.ClassEvents.Where(c.ClassID == 1).Select(c => c).Single();

then I get an error: InvalidCastException: Specified cast is not valid. The same thing happens if I use the "ClassEvent" class in place of the var. I'm new to this but this one seems like a true slam dunk rather than a bug. Is there something about the Single method that I don't know that is leading to the error? Any help would be appreciated!

like image 544
Mark Brittingham Avatar asked Jan 12 '09 01:01

Mark Brittingham


1 Answers

Slace - and any other interested parties. The cause of the "Invalid Cast Exception" error was a change in the underlying data model. A smallint field had been changed to bit. Thus, when the system tried to map the query results onto the "ClassEvent" data structure, the conflict between the model (which had not been updated) and the data table emerged.

Nonetheless, I do appreciate the answer!

like image 171
Mark Brittingham Avatar answered Sep 29 '22 08:09

Mark Brittingham