Брайан, я только что посмотрел код для GetModule (), и в фреймворке нет никакого конкретного кода VB, который проверял бы, что tabid равен нулю. Тем не менее, интересно то, что хранимая процедура, являющаяся частью SqlDataProvider, выбирает строки из представления «Модули», которые имеют совпадающий идентификатор модуля, независимо от того, какой это табид ...
ALTER PROCEDURE [dbo].[dnn_GetModule]
@ModuleId int,
@TabId int
AS
SELECT *
FROM dbo.dnn_vw_Modules
WHERE ModuleId = @ModuleId
AND (TabId = @TabId or @TabId is null)
Если я правильно понимаю, это вернет все строки, где moduleid - это та, которую вы указали, независимо от того, является ли @tabid нулевым или нет. Это делает @TabId довольно бессмысленным, тебе не кажется?