ORA-00904偶尔使用linq查询无效的标识符

问题描述 投票:0回答:1

我有两个不同的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;
    }
c# oracle entity-framework linq data-access
1个回答
0
投票

该问题最终成为该模型的另一部分,但只是关于Oracle风险的一些信息:

第一个查询工作正常,因为它只引用了一个在数据库中具有匹配列的特定字段(由于某种原因,oracle不关心该实例中的其余模型)。

第二个查询不起作用,因为它试图从表中拉出每一列,并且模型中缺少一个字段。

© www.soinside.com 2019 - 2024. All rights reserved.