У меня есть простой вопрос, но я не смог найти ответ сам.
Я использую модель EF4 CTP-5 Code First с генерируемыми вручную POCO.Он обрабатывает сравнения строк в сгенерированном SQL как
WHERE N'Value' = Object.Property
. Мне известно, что я могу переопределить эту функцию, используя:
[Column(TypeName = "varchar")]
public string Property {get;set;}
, которая решает проблему для этого единственного вхождения и правильно генерируетSQL как:
WHERE 'Value' = Object.Property
Тем не менее, я имею дело с ОЧЕНЬ большой моделью предметной области, и прохожу каждое строковое поле и настройка TypeName = "varchar" будет очень и очень утомительной.Я хотел бы указать, что EF должен видеть строку как varchar по всем направлениям, так как это стандарт в этой базе данных, а nvarchar является исключением.
Причина, по которой вы хотите исправить это, - эффективность выполнения запроса.Сравнение между varchar и nvarchar очень неэффективно в SQL Server 2k5, где сравнения varchar с varchar выполняются практически сразу.