I have an Entity Framework application that is connecting to a non-unicode database. If I leave all my mapped string columns as the default type, Entity Framework sends query parameters as unicode values as shown below, and my performance seems to suffer.
exec sp_executesql N'SELECT [s].[Something]
FROM [MyTable] AS [s]
WHERE [s].[id] = @__id_0',N'@__id_0 nvarchar(450)',@__id_0=N'123456'
If I change my mapping to specify a VARCHAR
column type, the query performance improves.
modelBuilder.Entity<MyObject>().Property(p => p.Id).HasColumnName("id").HasColumnType("VARCHAR(10)");
I'd rather not have to specify the column lengths of each field individually. Is there a problem with specifying all my column mappings as VARCHAR(MAX)
(not the actual columns; those will still have a defined length), assuming that I either never write to that table or I handle truncating the string to the appropriate length within my application?