>Hi Rob,
>
>May be you can also explain this strange code to me
>
>
>exec sp_executesql N'SELECT TOP (2)
> [Extent1].[op_code] AS [op_code],
> [Extent1].[first_name] AS [first_name],
> [Extent1].[last_name] AS [last_name],
> [Extent1].[password] AS [password],
> other columns
>
> FROM [dbo].[operator] AS [Extent1]
> WHERE [Extent1].[op_code] = @p0',N'@p0 varchar(8000)',@p0='333333'
>
>this is happening when I select an operator in the grid. I don't understand where the TOP(2) come from. I also would very much like to use the @p0 defined as char(6) instead of
>varchar(8000).
>
>The _dbSet.Find(id) method is being executed here.
Find (and Single) will throw an error if there are two entries with the same key. The top 2 is to check for a duplicate entry. See the first exception at
http://msdn.microsoft.com/en-us/library/gg696418%28v=vs.113%29.aspxThe use of varchar(8000) is to allow caching of the query plan as far as I can tell. See
http://stackoverflow.com/questions/6538746/why-does-code-first-ef-use-nvarchar4000-for-strings-in-the-raw-sql-command