ORA-00904 Случайный неверный идентификатор с запросом linq - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть два разных выражения linq, которые ссылаются на один и тот же столбец в базе данных.Один работает просто отлично, но другой выдает недопустимое исключение идентификатора (ORA-00904).

Большинство вопросов, которые я обнаружил, содержат голые SQL-запросы с некоторыми синтаксическими ошибками.Другие имеют отношение к модели сущностей, но, видя, что в одном запросе проблема не возникает, я не уверен, что проблема в модели.

Тот, который работает:

    public List<DateTime> GetAvailableDates()
    {
        var retData = new List<DateTime>();

        using (var context = new CASTDbContext())
        {
            var result = context.SomeDataEntity.Select(x => x.CAPTURE_DATE).Distinct().ToList();          
            if(result != null && result.Count > 0)
            {
                retData = result;
            }
        }

        return retData;
    }

Тот, который не работает:

    public List<SomeDataModel> GetSomeDataByDate(DateTime date)
    {
        var retData = new List<SomeDataModel>();

        using (var context = new SomeDbContext())
        {                
            var result = context.SomeDataEntity
                .Where( y => DbFunctions.TruncateTime(y.CAPTURE_DATE) == date.Date).ToList(); // the line that's throwing the exception

            if (result != null && result.Count > 0)
            {
                foreach (var item in result)
                {
                    retData.Add(mapper.Map<SomeDataModel>(item));
                }
            }
        }

        return retData;
    }

1 Ответ

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

Проблема оказалась в другой части модели, но только некоторые сведения об опасностях Oracle:

Первый запрос работал нормально, потому что он ссылался только на одно конкретное поле, в котором был соответствующий столбец в базе данных.(оракул по какой-то причине не заботится об остальной части модели).

Второй запрос не работал, потому что он пытался извлечь каждый столбец из таблицы, и в модели отсутствовало одно поле.

...