Альтернатива EntityFunctions.TruncateTime при использовании EF CTP5 с Sql Server Compact Edition 4.0 - PullRequest
6 голосов
/ 21 февраля 2011

Я использую код EF CTP5 в первую очередь с Sql CE 4.0. Я пытаюсь выполнить сравнение даты без учета времени между двумя свойствами DateTime.

Поскольку linq для entites не может проанализировать свойство DateTime.Date (что было бы неплохо), решение заключается в использовании EntityFunctions.TruncateTime, однако, похоже, это не работает с Sql CE 4.0.

Я могу вручную сравнить год, месяц и день двух дат, это работает, но делает код более многословным, чем это должно быть. В идеале я не хочу менять свои запросы, чтобы использовать длинную версию, чтобы они работали как с полноценным сервером sql, так и с sql ce 4.0.

Поэтому у кого-нибудь есть чистые и умные решения для этого? Я думаю, что решение, вероятно, будет включать переписывание выражений, но я не совсем уверен, с чего начать.

Любая помощь с благодарностью,

Пол

1 Ответ

2 голосов
/ 28 февраля 2011

Есть ли у вас возможность изменить структуру вашей базы данных?

Если это так, вы можете добавить дополнительный столбец только с частью даты в datetime, а затем использовать этот столбец в своем запросе.

Он будет занимать немного больше места в вашей базе данных, но должен работать немного быстрее, поскольку вы избегаете конверсий.

...