Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error, method not supported by LINQ to Entities

Why I am getting this error:

The method 'Single' is not supported by LINQ to Entities. Consider using the method 'First' instead.

           public ActionResult Details(int id)
Line 27:   {              
             var result = (from d in _db.MovieSet
Line 29:     where d.Id == id
Line 30:     select d).Single();
            //
            //
           } 

Code compiles safe, but only breaks if call is made to the respective section. I am new to LINQ, therefore do not know which methods are for LINQtoSQL or LINQtoEntities. This means more errors! We cannot remember all methods this way.

My question is, if there are limitations to the methods applicable to certain types / scenarios, why do they appear in Intellisense?

EDIT: Any work-around / technique helpful to have an idea if one is supported ?

like image 956
Asad Avatar asked Jan 31 '10 01:01

Asad


1 Answers

Microsoft has a complete list of supported and unsupported methods in Linq to Entities. That's where to go to find out this information.

You'll notice that the Single and SingleOrDefault methods are in fact listed as "not supported" in the section on Paging Methods.

As Jared pointed out, the compiler does not know at compile time which provider you are using, so it has no way to enforce compile-time safety of extension methods that the provider may or may not implement. You'll have to rely on the documentation instead.

like image 79
Aaronaught Avatar answered Oct 13 '22 00:10

Aaronaught