Сравнение даты и времени в формате AM / PM с Entity Framework - PullRequest
0 голосов
/ 24 сентября 2011

Я новичок в Entity Framework.У меня возникают проблемы при сравнении значений даты и времени, поскольку в моей базе данных SQL Server значения даты и времени хранятся в формате 24 часа, а приложение принимает формат времени в формате AM / PM.Я попытался разобрать поля, но получаю сообщение об ошибке:

Указанный тип элемента «Дата» не поддерживается в LINQ to Entities.Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей.>

Вот что я попробовал: (возвращает 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());

Знаете ли вы, как это сделать?

1 Ответ

0 голосов
/ 24 сентября 2011

Database или .Net не сохраняет дату в формате. Формат - это только описание таких методов, как ToString, как выполнить задачу. Таким образом, сравнение может быть сделано стандартным способом с оператором. Получаемая ошибка связана с переводом Linq запроса на sql на entity framework, просто Date не поддерживается.

Если, разделив сравнение на 2 части, вы хотите сравнить даты, это не правильно. Идентификатор .Date выше, сравнение .TimeofDay не должно изменить результат, но это так. Результат чека с Fecha_inicio_evento = 2011-01-02 01:01:01 и Fecha_inicio_evento = 2011-01-01 02: 01: 01

...