По сути, у меня есть таблица с почтовыми индексами. Поле почтового индекса определено как «char (5)». Сначала я использую код, поэтому я поместил эти атрибуты в свое свойство ZipCode:
[Key, Column( Order = 0, TypeName = "nchar"), StringLength(5)]
public string ZipCode { get; set; }
Теперь, если я сделаю запрос в EF:
var zc = db.ZipCodes.FirstOrDefault(zip => zip.ZipCode == "12345");
Сгенерированный SQL использует nvarchar (4000) для ввода параметров. А? Это потому, что «12345» технически является строкой неизвестной длины? Разве EF не должен быть достаточно умным, чтобы просто использовать правильный nchar (5) при запросе этой таблицы?
Я спрашиваю, потому что запрос nvarchar (4000) занимает полсекунды, тогда как запрос с правильно заданной областью намного быстрее (и меньше читает).
Буду признателен за любую помощь / совет.