ORA-00904 偶尔出现无效标识符与 linq 查询
ORA-00904 Occasional Invalid identifier with linq query
我有两个不同的 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;
}
问题最终成为模型的不同部分,但只是关于 Oracle 风险的一些信息:
第一个查询运行良好,因为它只引用了数据库中具有匹配列的一个特定字段(出于某种原因,oracle 不关心该实例中模型的其余部分)。
第二个查询不起作用,因为它试图从 table 中提取每一列,但模型中缺少一个字段。
我有两个不同的 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;
}
问题最终成为模型的不同部分,但只是关于 Oracle 风险的一些信息:
第一个查询运行良好,因为它只引用了数据库中具有匹配列的一个特定字段(出于某种原因,oracle 不关心该实例中模型的其余部分)。
第二个查询不起作用,因为它试图从 table 中提取每一列,但模型中缺少一个字段。