【问题标题】:What to do about @p LINQtoSQL parameters? What is @p anyhow?如何处理@p LINQtoSQL 参数?无论如何,@p 是什么?
【发布时间】: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


    【解决方案1】:

    @something 是一个 SQL 参数,.NET 通过添加到 SqlCommand 对象的 SqlParameter 集合来处理它。

    您可以创建任何名称的参数,Linq to SQL 只生成命名为p# 的参数,其中# 代表它在集合中的位置。

    【讨论】:

      【解决方案2】:

      为什么不能先将 SqlParameter 对象添加到 SqlCommand 对象的 Parameters 集合中,然后再将它们添加到 SqlDependecy 中?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-29
        • 2014-12-18
        • 2018-04-03
        • 2012-08-30
        • 2010-12-09
        • 1970-01-01
        • 1970-01-01
        • 2019-11-17
        相关资源
        最近更新 更多