【问题标题】:Entity Converting all DateTimes to Jan 1将所有日期时间转换为 1 月 1 日的实体
【发布时间】: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


    【解决方案1】:

    想通了 - 视图使用 EmployeeID 作为主键,而不是 MonthlyRecordID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多