使用Entity Framework将日期时间24hs与AM / PM格式进行比较

时间:2011-09-24 18:52:54

标签: c# asp.net sql-server entity-framework datetime-format

我是Entity Framework的新手。我在比较日期时间值时遇到问题,因为在我的SQL Server数据库中,datetime值存储为24hs格式,应用程序采用时间格式为A.M./P.M.格式。我试图解析字段但我收到错误消息:

  

LINQ to Entities不支持指定的类型成员“Date”。仅支持初始值设定项,实体成员和实体导航属性。>

以下是我尝试的内容:(如果找到任何记录,则返回true或false)

<pre><code>
     return !(DB.Eventos.Where(
                x =>
                (x.Fecha_inicio_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay >= eventos.Fecha_inicio_evento.TimeOfDay
                &&
                x.Fecha_inicio_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_inicio_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay)
                ||
                (x.Fecha_fin_evento.Date >= eventos.Fecha_inicio_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay >= eventos.Fecha_fin_evento.TimeOfDay
                &&
                x.Fecha_fin_evento.Date <= eventos.Fecha_fin_evento.Date
                &&
                x.Fecha_fin_evento.TimeOfDay <= eventos.Fecha_fin_evento.TimeOfDay
                )).Any());
</code></pre>

你知道有什么办法吗?

1 个答案:

答案 0 :(得分:0)

Database.Net不会以格式存储日期。格式仅是ToString方法如何执行任务的描述。因此,可以与运营商以标准方式进行比较。您收到的错误与Linq的{​​{1}}查询相关联sql,而entity framework不受支持。

如果通过将比较分成2部分,您想比较日期不正确。标识Date.Date的较高比较,不应该更改结果,但确实如此。与.TimeofDay = 2011-01-02 01:01:01和Fecha_inicio_evento = 2011-01-01 02:01:01

的结果