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