EF Sql Параметры запроса не возвращают результаты - PullRequest
0 голосов
/ 31 марта 2020

У меня есть рабочий запрос, который возвращает 140 строк из базы данных:

string tag = "New York";

string sql = "select   " +
"    T.Id       TagId, " +
"    PM.Id      MachineId, " +
$"    '{tag}'     TagSiteName, " +
"    T.Name     TagCpeMachineLine, " +
"    PM.Plant, " +
"    PM.Line, " +
"    PM.Type " +
"from Tags T " +
"inner join PaperMachines PM " +
"    ON PM.Id = T.PaperMachineId " +
$"WHERE T.Name LIKE ( '{tag}' ) ";

var result = db.Database.SqlQuery<TagsMachines>(sql);

Когда я пытаюсь параметризовать его, я получаю «Перечисление не дало результатов» из результата.

string tag = "New York";

string sql = "select   " +
"    T.Id       TagId, " +
"    PM.Id      MachineId, " +
"    '@tag'     TagSiteName, " +
"    T.Name     TagCpeMachineLine, " +
"    PM.Plant, " +
"    PM.Line, " +
"    PM.Type " +
"from Tags T " +
"inner join PaperMachines PM " +
"    ON PM.Id = T.PaperMachineId " +
"WHERE T.Name LIKE ( '@tag' ) ";

var result = db.Database.SqlQuery<TagsMachines>(sql, new SqlParameter("@tag", tag));

Я не уверен, что здесь происходит. Есть идеи?

1 Ответ

1 голос
/ 31 марта 2020

Удалите тег @ в верхней части запроса и в нижней части запроса сделайте его T.Name = @tag or T.Name like ('%' + @tag +'%'), если хотите, чтобы он содержал.
Наконец, в конце строки результата добавьте a .FirstOrDefault().

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