Конвертировать дату SQL в дд-мммм-гггг C # - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть поле date в таблице SQL, и если я пытаюсь сохранить, либо 09-02-2019, либо 09 февраля 2019 года, он сохраняет его мне, но попытка восстановить эту дату показывает что-то вроде этого(все вместе или с T):

2019-02-09 00:00:00:000

Я пытаюсь восстановить эти значения с помощью EF и LINQ, чтобы иметь возможность форматировать дату, я пытаюсь реализовать это:

СВОЙСТВА ДАТЫ В МОИХ ЗАКАЗАХ КЛАССА

[Column(TypeName = "date")]
public DateTime? fechaInicio { get; set; }

[Column(TypeName = "date")]
public DateTime? fechaExpo { get; set; }

[Column(TypeName = "date")]
public DateTime? fechaEntrega { get; set; }

ПОЛУЧИТЬ СПИСОК ДАННЫХ

//TRAER LISTA DE ORDENES
  public List<mapOrdenesListaTemp> listadoOrdenes()
  {
     var lista = new List<mapOrdenesListaTemp>();

      using(var ctx=new ModelContext())
      {
         lista = ctx.Ordenes.Select(m => new mapOrdenesListaTemp
                                    {
fechaInicio=Convert.ToDateTime(m.fechaInicio).ToString("dd-mmmm-yyyy",CultureInfo.InvariantCulture),
fechaExportacion= Convert.ToDateTime(m.fechaExpo).ToString("dd-mmmm-yyyy", CultureInfo.InvariantCulture),
fechaEntrega= Convert.ToDateTime(m.fechaEntrega).ToString("dd-mmmm-yyyy", CultureInfo.InvariantCulture)

                                     }).ToList();  

      }

Я пытаюсь присвоить данные здесь (CLASS mapOrdenesListaTemp)

public class mapOrdenesListaTemp
{
    public string fechaInicio { get; set; }
    public string fechaEntrega { get; set; }
    public string fechaExportacion { get; set; }
}

Но я получаю эту ошибку:

System.NotSupportedException: «LINQ to Entities не распознает метод» System.String ToString (System.String, System.IFormatProvider) ', и этот метод не может быть преобразован в выражение хранилища.'

Я знаю, что не могу использовать .ToString (), как говорит ошибка, но как мне это сделать?восстановить данные и затем применить преобразование (я хотел бы передать дату от 2019-02-09 до 09-February-2019?обойти эту ошибку, я не знаю, если мой код правильный?)

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Сообщение об ошибке совершенно ясно.Вы не можете форматировать дату в запросе EF, потому что она не может быть переведена в эквивалентный sql.

В качестве альтернативы вы можете сделать следующее:

lista = ctx.Ordenes.Select(m => new { m.fechaInicio, m.fechaExpo, m.fechaEntrega}).ToList();

var listWithFormattedDate = lista.Select(m => new mapOrdenesListaTemp
                            {
                               fechaInicio = m.fechaInicio?.ToString("dd-MMMM-yyyy",CultureInfo.InvariantCulture),
                               fechaExportacion= m.fechaExpo?.ToString("dd-MMMM-yyyy",CultureInfo.InvariantCulture),
                               fechaEntrega= m.fechaEntrega?.ToString("dd-MMMM-yyyy", CultureInfo.InvariantCulture)
                             }).ToList();
0 голосов
/ 10 февраля 2019

Когда вы используете 1. Тип данных DateTime, то значение будет сохраняться, как показано в примере ниже 1998-01-02 10: 10: 50.600 2. Тип данных Date, тогда значение будет сохраняться, как показано в примере ниже 1998-01-02 00: 00: 00.000 - поле времени будет всегда там, но будет 00: 00: 00.000

В этом случае я предлагаю преобразовать тип данных даты в строку при сохранении и получениизначение в и из БД

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