The Entity Framework targets the Transact-SQL query based on the SQL Server version that is specified in the ProviderManifestToken
attribute of the Schema element in the storage model file (SSDL). This
version might differ from the version of the actual SQL Server you are
connected to. For example, if you are using SQL Server 2005, but your ProviderManifestToken
attribute is set to 2008, the generated Transact-SQL query might not
execute on the server. For example, a query that uses the new date time
types that were introduced in SQL Server 2008 will not execute on
earlier versions of the SQL Server. If you are using SQL Server 2005,
but your ProviderManifestToken
attribute is set to
2000, the generated Transact-SQL query might be less optimized, or you
might get an exception that says that the query is not supported. For
more information, see the CROSS and OUTER APPLY Operators section,
earlier in this topic.
Certain database behaviors depend on the compatibility level set to the database. If your ProviderManifestToken
attribute is set to 2005 and your SQL Server version is 2005, but the
compatibility level of a database is set to "80" (SQL Server 2000), the
generated Transact-SQL will be targeting SQL Server 2005, but might not
execute as expected due to the compatibility level setting. For
example, you might lose ordering information if a column name in the
ORDER BY list matches a column name in the selector.