Я пытаюсь исправить проблему в приложении ASP.NET, которое использует DataContext.ExecuteQuery для выполнения инструкции sql. По ключевому слову:Может ли DataContext.ExecuteQuery обрабатывать все где оператор
LEFT OUTER JOIN dbo.Contacts ON dbo.Accounts.SalesRepId = dbo.Contacts.ContactId WHERE " + string.Join(" AND ", whereClauses) + @"
где «whereClauses» - это список строк. Таким образом, в запрос внедряется функция поиска. Проблема возникает при запуске открытого поиска для строки типа «O'Donnel», которая явно запускает запрос в ошибке. Меня попросили исправить эту проблему. Мой подход заключался в том, чтобы заменить оператор where «{0}» в запросе, а затем передать его как параметр в методе ExecuteQuery. Я достиг:
LEFT OUTER JOIN dbo.Contacts ON dbo.Accounts.SalesRepId = dbo.Contacts.ContactId {0}
var where = "WHERE 1=1";
_db.ExecuteQuery<AccountModel>(query, where)
но он не работает? Когда я заменить всю, где часть только с параметром для нее все в порядке:
LEFT OUTER JOIN dbo.Contacts ON dbo.Accounts.SalesRepId = dbo.Contacts.ContactId WHERE 1={0}
var where = "1";
_db.ExecuteQuery<AccountModel>(query, where)
Мой вопрос - это то можно нагнетать целое, в котором оператор динамически в DataContext.ExecuteQuery метод, или я могу передать определенные параметры только используя этот метод?