Linq к SQL nvarchar проблема

Не обязательно, это зависит, что Вы хотите сделать. Вы могли уточнить немного? Ajax не нужен доступ к cookie для работы, это может выполнить запросы самостоятельно для извлечения информации, запрос страницы, который выполняет вызов Ajax, мог получить доступ к cookie-данным & пасуйте назад это к сценарию выполнения вызова без необходимости JavaScript непосредственно получить доступ к cookie

9
задан marc_s 9 November 2009 в 06:56
поделиться

1 ответ

Хммм. Это была известная ошибка в сборках LINQ-to-SQL до RTM, но из того, что я читал в Интернете, это была фиксированная проблема для сравнений на равенство в RTM (хотя все еще не работает для сравнений Contains ()).

Тем не менее, вот ветка на форумах MSDN с подробным описанием некоторых обходных путей: http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/4276ecd2-31ff-4cd0-82ea-7a22ce25308b

Мне больше всего нравится обходной путь:

//define a query
IQueryable<Employee> emps = from emp in dc2.Employees where emp.NationalIDNumber == "abc" select emp;

//get hold of the SQL command translation of the query...
System.Data.Common.DbCommand command = dc2.GetCommand(emps);

//change param type from "string" (nvarchar) to "ansistring" (varchar)
command.Parameters[0].DbType = DbType.AnsiString; 
command.Connection = dc2.Connection;

//run
IEnumerable<Employee> emps2 = dc2.Translate<Employee>(command.ExecuteReader());

BTW , другой случай, который я видел, был в таблице с нечетным распределением значений (например, 50% таблицы имели то же значение), что означает, что, учитывая, что параметр неизвестен SQL Server во время компиляции плана, сканирование таблицы было лучшим планом доступный. Если ваш дистрибутив также необычен, описанные выше обходные пути не сработают, поскольку сканирование будет происходить не из-за отсутствующего преобразования, а из самой параметризации. В этом случае я знаю только одно обходное решение - использовать подсказку OPTIMIZE FOR и вручную указать SQL.

8
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: