2014-08-27 4 views
2

Я только что столкнулся с странной проблемой Linq To Entities. Вот фон: - Entity Code First - Этот объект отображается на SQL Server ViewLinq To Entities bad SQL casting in where where

При попытке в deffered выполнение таких как

byte id = 1; 

var query = myDbSet.Where(s => s.SiteId == id); 

query = query.Where(s => s.Type == "Some Type"); 

var lst = query.ToList(); 

я получаю тайм-аут от SQL Server (запрос длится 1 мин).

При профилировании SQL-запроса я вижу странное литье из SiteId в int, тогда как это tinyint. Выполняя тот же запрос, удалив бросок, запрос длится 3 секунды!

Как заставить тип параметра не иметь какое-либо SQL-литье?

+0

Боковое примечание - ваше заявление 'query.Where (s => s.Type ==" Some Type ");' фактически ничего не делает, потому что вы его нигде не назначили. Если вы хотите отфильтровать это, вам нужно будет выполнить запрос = query.Where (s => s.Type == "Some Type"); ' – entropic

+0

хорошо видно! Это не настоящий код ... Я написал его в вопросе, чтобы могли быть некоторые ошибки ... Изменен вопрос. – boblemar

ответ

0

Изменение ИНЕКЕ по:

var query = MyDbSet.Where(s => id.Equals(s.SiteID)); 

решается вопрос!

Смежные вопросы