Entity Framework отправляет параметры в виде Unicode, вызывая проблемы с производительностью - PullRequest
1 голос
/ 19 января 2011

Мы создали модель EF1 поверх устаревшей базы данных SQL.

В этой базе данных есть столбцы с не-юникодными строками. Эти столбцы также используются в качестве ключей.

У нас была проблема с производительностью по одному конкретному запросу. Мы заметили, что EF отправляет параметр как Unicode.

Затем мы переписали эту часть кода для непосредственного запуска оператора SQL и отправили параметр в виде строки, отличной от Юникода.

Разница была следующая:

  • С EF: 23000 мс
  • Без EF: 90 мс

Похоже, что SQL-сервер берет поле из каждой из 50000 строк, преобразует его в Unicode, чтобы сравнить его с параметром, который отправляется.

Кто-нибудь знает, как заставить EF отправлять параметр в виде строки, не являющейся юникодом? Или любым другим способом исправить это.

1 Ответ

3 голосов
/ 19 января 2011

Это [и многие другие проблемы, влияющие на производительность] исправлено в EFv4. Лучше всего использовать EFv4 (Entity Framework в .net 4.0) вместо EFv1 (Entity Framework в .net 3.5).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...