【发布时间】:2021-03-18 12:06:13
【问题描述】:
在我的 .NET Core 3.1 应用程序中,我使用 linq 使用以下语句从视图中获取条目列表:
List<VEntries> entryList = dbContext.VEntries.Where(x => x.Timestamp.HasValue &&
x.Timestamp.Value.Date == dateTimeLocal.Date &&
x.Timestamp.Value.Hour == dateTimeLocal.Hour)
.ToList();
dateTimeLocal 在这种情况下等于在本地时间搜索条目的时间戳。
此代码在我的本地环境中运行良好,但在生产系统上它会引发以下异常:
System.InvalidCastException:指定的强制转换无效。
在 Oracle.ManagedDataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
在 lambda_method(Closure , QueryContext , DbDataReader , ResultContext , Int32[] , ResultCoordinator )
在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 源)
两个系统上的数据库视图是相同的,并且包含一个类型为 DATE 的列 Timestamp,它可以为空:
生成的模型如下所示:
public partial class VEntries
{
public string QualityData { get; set; }
public decimal? Value { get; set; }
public DateTime? Timestamp { get; set; }
public decimal? Average { get; set; }
public decimal? Min { get; set; }
public decimal? Max { get; set; }
}
这可能是什么问题?
【问题讨论】:
-
您能否发布
entryData的代码以及相关实体/视图的配置? -
@dglozano entryData 只是 dbContext.VEntries。我相应地修改了问题。
标签: c# entity-framework linq .net-core entity-framework-core