C# Oracle.ManagedDataAccess在DbFunctions.CreateDate上爆炸

C# Oracle.ManagedDataAccess在DbFunctions.CreateDate上爆炸,c#,oracle,entity-framework,entity-framework-6,linq-to-entities,C#,Oracle,Entity Framework,Entity Framework 6,Linq To Entities,我有一个EF查询,其中我需要获取DateTime实体集合中每月的第一天。这是使用LINQtoEntities(如果是LINQtoObject,我只需实例化一个新的DateTime)。这基本上就是我正在使用的代码: dbContext.Calendar .Select(date=>DbFunctions.CreateDateTime(date.Year,date.Month,1,0,0)) .ToList(); 这将导致以下错误:ORA-01841:(完整)年份必须介于-4713和+9999之间

我有一个EF查询,其中我需要获取DateTime实体集合中每月的第一天。这是使用LINQtoEntities(如果是LINQtoObject,我只需实例化一个新的DateTime)。这基本上就是我正在使用的代码:

dbContext.Calendar
.Select(date=>DbFunctions.CreateDateTime(date.Year,date.Month,1,0,0))
.ToList();
这将导致以下错误:
ORA-01841:(完整)年份必须介于-4713和+9999之间,而不是0

但是,看看即将到来的数据,我能看到的最接近0的年份是2000年,但即使我将其限制在非2000年,它也会发生

另外,
dbContext.Calendar.ToList()工作得很好,但它不能让我在本月的第一个月

这是已知的bug吗?有没有更好的办法找到这个月的第一天?有没有更好的方法在Linq中为Oracle数据库实例化DateTimes到实体


谢谢。

我总是讨厌答案就在眼前,我一次又一次地想念它。在本例中,解决方案是
AsEnumerable()
。在这之后,您将使用Linq到对象,而不是Linq到实体,因此您可以像往常一样实例化日期时间

dbContext.Calendar
.可计算的()
.选择(日期=>新日期时间(日期.年,日期.月,1))
.ToList();

我总是讨厌答案就在眼前,我一次又一次地想念它。在本例中,解决方案是
AsEnumerable()
。在这之后,您将使用Linq到对象,而不是Linq到实体,因此您可以像往常一样实例化日期时间

dbContext.Calendar
.可计算的()
.选择(日期=>新日期时间(日期.年,日期.月,1))
.ToList();