Зачем вам это нужно в строке запроса?Это обеспечивается ...
If HttpContext.Current.User.Identity.IsAuthenticated Then
Dim user As MembershipUser = Membership.GetUser()
Dim guid as Guid= DirectCast(user.ProviderUserKey, Guid)
End If
Я бы не отображал таких чувствительных пользователей данных, даже если это не вызвало бы проблем с безопасностью, а просто потому, что приложение выглядит небезопасным, если каждый видит больше, чем ему нужновидеть.Вы можете временно сохранить его в сеансе, чтобы передать его со страницы 1 на страницу 2.
Если вы хотите сохранить идентификатор пользователя как чужой ключ, можно использовать уникальный идентификатор, предоставляемый MembershipProvider.
Если вы хотите использовать вместо этого целое число (удобочитаемость, меньше места на диске), вам нужно создать таблицу (aspnet_UserID
), которая отображает guid на ваш int-ID в отношении один-к-одному,Создайте также триггер для вставок и удалений в таблице aspnet_Users
, например:
CREATE TRIGGER [dbo].[trgCreateUserID] ON [dbo].[aspnet_Users]
FOR INSERT
AS
INSERT INTO dbo.aspnet_UserId(fiUser)
SELECT UserID FROM inserted
и
CREATE TRIGGER [dbo].[trDeleteUserID] ON [dbo].[aspnet_Users]
FOR DELETE
AS
DELETE FROM dbo.aspnet_UserId
WHERE fiUser IN(SELECT UserID FROM DELETED)