#sql #sql-server #entity-framework-core #ef-core-3.1
#sql #sql-сервер #entity-framework-core #ef-core-3.1
Вопрос:
У меня есть веб-приложение, написанное на .NET Core, и у меня есть метод post, который получает параметр и выполняет запрос к базе данных.
public IActionResult OnPostGetRegestrationList(string objId)
{
List<Flight> data = _context.Flight.FromSqlRaw("select id, side, reg, CAST(Actual_Date as date)as ActDate , CAST(Actual_Time as time)as ActTime from Flight where REG = {0} order by reg, ActDate, ActTime", objId).ToList();
return new JsonResult(data);
}
Запрос будет работать, если приведения нет, но я должен выполнить приведение, чтобы я мог получить время в этом формате ’12:49: 00.0000000′ вместо этого формата ‘31.12.1899 12:49: 00 PM’, что совершенно неверно, потому что дата генерируется автоматически и выдает неверную.
Как добавить CAST
в SQL raw в Entity Framework, и даст ли добавление его в order тот же результат (добавление ПРИВЕДЕНИЯ в order работает)? вот рабочий запрос, но это не то, что я хочу.
List<Flight> data = _context.Flight.FromSqlRaw("select id, side, reg, Actual_Date , Actual_Time from Flight where REG = {0} order by reg, CAST(Actual_Date as date), CAST(Actual_Time as time)", objId).ToList();
Это класс полета
public class Flight
{
[Key]
public Int64 id { get; set; }
public string REG { get; set; }
public string Side { get; set; }
public string Actual_Date { get; set; }
public string Actual_Time { get; set; }
}
Класс в БД
CREATE TABLE [dbo].[Flight](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[REG] [nvarchar](max) NULL,
[Side] [nvarchar](max) NULL,
[Actual_Date] [nvarchar](max) NULL,
[Actual_Time] [nvarchar](max) NULL,
CONSTRAINT [PK_Flight] PRIMARY KEY CLUSTERED
(
[id] ASC
)
Комментарии:
1. Какую СУБД вы используете? (Когда дело доходит до даты / времени, многие продукты далеки от ANSI SQL совместимый.)
2. Я использую sql 2019 @jarlh
3. Зачем использовать необработанный SQL для такой простой вещи, которая может быть легко предоставлена ORM и LINQ? Все, что вам нужно, это правильное сопоставление типов данных. Какой тип
Actual_Date
Actual_Time
столбцов и в базе данных? Каков тип соответствующих свойств вFlight
классе?4. приведение как time(7)?
5. Пожалуйста, отредактируйте свой вопрос, чтобы включить определение
Flight
класса и определениеFlight
таблицы. В .NET нет чистого типа даты (это DateTime), и ближайшая вещь к типу времени, который у него есть, — это TimeSpan.