У меня должен быть простой вопрос, но я сам не смог найти ответ.
Я использую модель 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 выполняются почти сразу.