【发布时间】:2008-10-29 02:36:47
【问题描述】:
好吧,仍然在我的 Asp.net MVC 应用程序中处理一些 SqlCacheDependecy
我从 Microsoft 获得了这段代码来缓存 LINQtoSQL,基本上它的作用是从 LINQ 查询中获取 SqlCommand 文本并通过 SqlDependecy 需要的 System.Data.SqlClient.SqlCommand 执行该文本...
但是有一个小问题,那就是每当你在 LINQ 中执行 where 子句时,生成的 SQL 就是这样
SELECT [t0].[MemberID], [t0].[Aspnetusername], [t0].[Aspnetpassword], [t0].[EmailAddr], [t0].[DateCreated], [t0].[Location], [t0].[DaimokuGoal], [t0].[PreviewImageID], [t0].[LastDaimoku] AS [LastDaimoku], [t0].[LastNotefied] AS [LastNotefied], [t0].[LastActivityDate] AS [LastActivityDate], [t0].[IsActivated]
FROM [dbo].[Members] AS [t0]
INNER JOIN [dbo].[MemberStats] AS [t1] ON [t0].[MemberID] = [t1].[MemberID]
WHERE [t1].[TotalDeterminations] > @p0
注意 where [t1].[TotalDeterminations] > @p0,SqlCommand 对我大喊大叫,因为它要我声明一个 @p0 的标量变量...显然我不能
那么,提供此代码来缓存 Linq 查询的微软到底是如何期望人们使用 where 子句的呢?有人对此有任何想法吗?
编辑另外,SQL 怎么知道@p 是什么,当只是像正常一样执行 LINQ 时,上面的查询是什么被传递到数据库中?
【问题讨论】:
标签: sql-server asp.net-mvc linq-to-sql