Хорошо, я все еще борюсь с некоторыми 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, как обычно, вышеуказанный запрос передается независимо от того, что в базу данных?