EF Code First - глобально установить отображение varchar поверх nvarchar

У меня должен быть простой вопрос, но я сам не смог найти ответ.

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

16
задан STW 9 May 2012 в 12:42
поделиться