Как бы я использовал SQL-запрос в контроллере MVC и получить значение для отображения в PDF - PullRequest
0 голосов
/ 21 июня 2019

У меня проблема в том, что я не могу получить значение запроса так же, как при использовании того же запроса в SQL Server Management Studio.

Я пыталсяиспользуя sqlQuery в MVC, но я получал всю строку вместо значения этого запроса.

SQL-запрос в Studio

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, [----------], [----------])), 0),  108) as Total
from ---------- where ---------- = '1'

Запрос контроллера

var query = db.Work.SqlQuery("SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, [----------], [----------])), 0),  108) as Total from ---------- where ----------= '1'");

Затем, где я хочу, чтобы он показывал

graphics.DrawTextBox(MarginLeftTextBox + 120f * 4, MarginTop + lineStepDown + 330f, 240.0f, regularTextStyle.FontSize + 2f, >>HERE<<, regularTextStyle2, TextAlignment.Center, thinBorder);

Когда я набираю query.toString (), где >> HERE <<, он просто показывает весь запрос вместо значения запроса, которое должно быть 19:30: 00. </p>

1 Ответ

1 голос
/ 21 июня 2019

Вы пытаетесь прочитать результаты как Work объект:

db.Work.SqlQuery("...")

Но ваш запрос вернет только один столбец. Предположительно объект Work имеет больше свойств, чем просто одно свойство с именем Total.

Действительно, из комментария, похороненного в вопросе выше:

Считыватель данных несовместим с указанным CPATV1Model.Work. Элемент типа «Id» не имеет соответствующего столбца в считывателе данных с тем же именем.

Это говорит о том, что Entity Framework пытается заполнить модель типа Work, у которой есть свойство с именем Id, но ваш запрос не возвращает такого свойства.

По сути, вы пытаетесь написать запрос SQL для сущности . Вместо этого это должно быть для типа не-сущности . Удалите ссылку на Work и укажите тип возвращаемого значения.

Например:

db.SqlQuery<string>("...")

Это должно привести к IEnumerable<string>, из которого вы можете прочитать первую запись:

var query = db.SqlQuery<string>("...");
var total = query.FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...