Что делать с параметрами @p LINQtoSQL? Что такое @p? - PullRequest
1 голос
/ 29 октября 2008

Хорошо, я все еще борюсь с некоторыми SqlCacheDependecy в моем приложении Asp.net MVC

Я получил этот фрагмент кода от Microsoft для кэширования LINQtoSQL, в основном он получает текст SqlCommand из запроса LINQ и выполняет его через System.Data.SqlClient.SqlCommand, который необходим SqlDependecy ...

Однако есть одна небольшая проблема с этим, и каждый раз, когда вы делаете предложение where в LINQ, сгенерированный 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 ... что, очевидно, я не могу

Итак, как, черт возьми, Microsoft, которая предоставляет этот код для кэширования запросов Linq, ожидает, что люди будут использовать предложения where? У кого-нибудь есть идеи по этому поводу?

Редактировать Кроме того, как, черт возьми, SQL знает, что такое @p в любом случае, когда просто выполняет LINQ, как обычно, вышеуказанный запрос передается независимо от того, что в базу данных?

Ответы [ 2 ]

1 голос
/ 29 октября 2008

@something - это параметр SQL, который обрабатывается .NET путем добавления в коллекцию SqlParameter объекта SqlCommand.

Вы можете создавать параметры с любым именем, Linq to SQL просто генерирует их с именем p#, где # представляет свою позицию в коллекции.

0 голосов
/ 29 октября 2008

Почему нельзя просто добавить объекты SqlParameter в коллекцию Parameters объекта SqlCommand перед их добавлением в SqlDependecy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...