我们刚开始使用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
有人有想法吗?
答案 0 :(得分:3)
这样的内容接近您的查询:
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()
相同,只是具有更高的精度。
答案 1 :(得分:2)
尝试
context.Database.SqlQuery<EntityA>("SELECT * FROM TableA
WHERE DATEDIFF(DAY,GETDATE(), TableA.ExpirationDate == x days");