Entity Framework использовать SQL Function или LIKE по DateTime?
От: Alexandr Sulimov Украина www.ase.com.ua
Дата: 09.08.14 12:05
Оценка: :)
Задача формировать правильный запрос для поиска по полю DateTime? (Nullable)
EF DateTime.ToString() приводит через CAST и формат изменить нельзя, нужно 10/07/2014 привести к 10.07.2014 и искать %07.201% а CAST приведет Jul 07, 2014

Есть мысль написать свою функцию с return CONVERT(nvarchar(10), @value, 104) и использовать ее в WHERE CLAUSE

Нашел только 1 статью про maping to custom function но из нее не понял как такое реализовать.

Подтолкните к решению.
Смелости хватает только под ником писать?
Re: Entity Framework использовать SQL Function или LIKE по DateTime?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 09.08.14 12:32
Оценка: +2
Здравствуйте, Alexandr Sulimov, Вы писали:

AS>Задача формировать правильный запрос для поиска по полю DateTime? (Nullable)

AS>EF DateTime.ToString() приводит через CAST и формат изменить нельзя, нужно 10/07/2014 привести к 10.07.2014 и искать %07.201% а CAST приведет Jul 07, 2014

AS>Есть мысль написать свою функцию с return CONVERT(nvarchar(10), @value, 104) и использовать ее в WHERE CLAUSE


AS>Нашел только 1 статью про maping to custom function но из нее не понял как такое реализовать.


AS>Подтолкните к решению.


Если хочешь чтобы работало быстро, то:
1) Не делай конверсию данных в запросе.
2) Не делай LIKE в wildcard в начале шаблона.
3) Не используй функции в запросах.

Сто нужно делать:
1) Вычисляемые поля — год, месяц, день по дате
2) Запрос такого вида: WHERE месяц = 7 AND год >= 2010 AND год < 2020
3) ОБЯЗАТЕЛЬНО — индекс на поля в запросе. В твоем случае (месяц, год) include (поля в проекции)

В EF мапишь год, месяц, день как store generated поля.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.