如何在EF 4.1代码中首先使用复杂的sql查询

本文关键字:复杂 查询 sql EF 代码 | 更新日期: 2023-09-27 18:22:31

我们刚刚开始首先使用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 

有人有主意吗?

如何在EF 4.1代码中首先使用复杂的sql查询

类似这样的东西接近您的查询:

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()相同,只是具有更高的精度。

尝试

context.Database.SqlQuery<EntityA>("SELECT * FROM TableA
WHERE DATEDIFF(DAY,GETDATE(), TableA.ExpirationDate == x days");