как сначала использовать сложный SQL-запрос в коде EF 4.1 - PullRequest
0 голосов
/ 04 февраля 2012

Мы только что начали использовать код EF 4.1.У меня есть SQL-запрос примерно так:

SELECT * FROM TableA  
WHERE DATEDIFF(DAY,GETDATE(), TableA.ExpirationDate == x days)

Я не знаю, как использовать SQL-запрос с первым набором функций кода EF 4.1.Одна такая функция:

IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class 

У кого-нибудь есть идея?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2012

Что-то вроде этого близко к вашему запросу:

var things = context.TableAEntities
    .Where(e => EntityFunctions.DiffDays(DateTime.Now, e.ExpirationDate) == x)
    .ToList();

Это означает:

SELECT 
[Extent1].[Id] AS [Id], 
//... more columns
[Extent1].[ExpirationDate] AS [ExpirationDate]
FROM [dbo].[TableA] AS [Extent1]
WHERE (DATEDIFF (day, SysDateTime(), [Extent1].[ExpirationDate])) = @p__linq__0

SysDateTime() (в SQL Server) совпадает с GETDATE(),он просто имеет более высокую точность.

2 голосов
/ 04 февраля 2012

Попробуйте

context.Database.SqlQuery<EntityA>("SELECT * FROM TableA
WHERE DATEDIFF(DAY,GETDATE(), TableA.ExpirationDate == x days");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...