将所有日期时间转换为1月1日



我使用Entity从客户的SQL表中提取一些数据,我想根据日期对其进行过滤。客户将每行的相关月份存储为YYYYMM格式的6位字符串。我尝试解决这个问题(因为我不能将列类型更改为datetime2)是创建一个SQL视图,它执行以下操作来创建一个表示月份的datetime2列:

CONVERT(datetime2, MON.Month + '01') AS CoveredMonth

然后在。net内部,我有两个DateTime对象,yearStart和yearEnd,分别表示2016年1月1日和2017年1月1日,以及我正在查找其记录的特定员工。我有以下代码尝试在此列上进行过滤:

 IList<MonthlyRecord> monthlyRecords = m_LTContext.MonthlyRecords
     .Where(r => r.EmployeeID == employee.ID && r.CoveredMonth >= yearStart && r.CoveredMonth < yearEnd)
     .ToList<MonthlyRecord>();

当我放置一个断点来检查返回到monthlyRecords的内容时,我看到了记录的预期计数。但是,每个记录的CoveredMonth设置为2016年1月1日。在SQL中运行相同的查询,我再次得到相同的计数记录,但适当的日期:1月1 '16,2月1 '16等。

是否有一个问题与实体以某种方式映射属性是非标准的视图?在我的脑海中有一些技巧,但我真的想"正确"地解决这个问题。

发现了——View使用EmployeeID作为主键,而不是MonthlyRecordID。

相关内容

  • 没有找到相关文章

最新更新