Как параметризовать сравнения дат в Entify Framework с Odata - PullRequest
0 голосов
/ 10 июля 2019

У меня есть веб-API, который использует Odata для запросов к Dbset с использованием Entity Framework и мне нужна помощь в параметризации значений даты с помощью операторов сравнения (> или <). </p>

Контроллер имеет атрибут [EnableQuery] . Значение, которое передается в запрос $ filter: -

OpenDate gt 2019-07-01T00: 00: 00.0000000Z и OpenDate lt 2019-07-10T00: 00: 00.0000000Z и SponsorStatus eq 1 и AccountStatus eq '0'

Выполняется EF-запрос

Opened connection at 7/9/2019 6:16:41 PM -04:00
SELECT TOP (@p__linq__2) 
    blah....
FROM ( SELECT 
        same blah...
FROM (SELECT 
    same blah...
FROM [Account].[AccountDetails] AS [AccountDetails]) AS [Extent1]
        WHERE ([Extent1].[OpenDate] > convert(datetime2, '2019-06-30 20:00:00.0000000', 121)) AND ([Extent1].[OpenDate] < convert(datetime2, '2019-07-09 20:00:00.0000000', 121)) AND ( CAST( [Extent1].[SponsorStatus] AS int) = @p__linq__0) AND (([Extent1].[AccountStatus] = @p__linq__1) OR (([Extent1].[AccountStatus] IS NULL) AND (@p__linq__1 IS NULL)))
    )  AS [Project1]
    ORDER BY [Project1].[CFNAccountId] ASC

Я бы хотел, чтобы приведенные выше части OpenDate также были параметризованы, чтобы план запроса был фиксированным. Есть идеи как этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...