The architecture of the generated code works well with SQL caching. The generated CRUD layer can use generated stored procedures enabling caching of query plans. You can choose to not use stored procedures as well and dynamic SQL will be issued.
When performing CRUD operations or dynamic LINQ queries, parameterized queries are used and as such SQL Server's caching mechanism is used. This has the same benefits as the stored procedure. If you run the same LINQ statement again, the query plan is cached by SQL Server. The caveat is that since LINQ is more free form, you can create a great variety of queries. This attribute executes better in a real-world application than in theory, since applications do not normally issues thousands of distinct queries but issue the same query with differing parameters.