【发布时间】:2016-08-25 14:25:45
【问题描述】:
我正在使用 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 的内容时,我看到了预期的count 条记录。但是,每条记录都有一个 CoveredMonth 设置为 2016 年 1 月 1 日。在 SQL 中运行相同的查询我再次得到相同的 count 记录,但适当的日期:2016 年 1 月 1 日,2 月 1 日'16 等
Entity 以某种方式映射视图上的非标准属性是否存在问题?我脑子里有一些技巧,但我真的很想“正确地”解决这个问题。
【问题讨论】:
标签: sql-server entity-framework datetime