A: 

You can try setting the ObjectTrackingEnabled of the context to false. This helped me in this same situation but I later turn it on while updating and inserting records.

DBDataContext.ObjectTrackingEnabled = false; // Read Only
JeremySpouken
Thanks, I was playing with this before and I was always getting “Data context options cannot be modified after results have been returned from a query..”Anyway this query is used in multiple places in relation with other queries (for selecting or updating) and therefore I would be afraid to set tracking off.
Vladimir Kojic
A: 

It is a bug and it will not be fixed.

Similar problem was described in the post from link below. I tried not to use PK in compiled query as suggested but got the same problem. So there is an issue with compiled queries bypassing the cache.

http://stackoverflow.com/questions/1427624/workaround-for-linq-to-sql-entity-identity-caching-and-compiled-query-bug

Vladimir Kojic
A: 

LINQ to SQL CompiledQuery is good option, but thing that needs to be taken into consideration while using the same is that first time when it is called it takes more time than a routine query would take. Refer to below link...

http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20CompiledQuery.aspx

Experts Comment