无法从 aspnet_Users 或 AspNetUsers 中删除?
Cannot delete from aspnet_Users or AspNetUsers?
我有一个使用 aspnet_regsql 的数据库设置,我正在使用 visual studio 2013 中包含的 Web 表单模板。我正在尝试从 aspnet_Users 和 AspNetUsers 中删除。但是,我需要使用存储过程,因为我要从两个不同的表中删除。我可以从 AspNetUsers 中删除用户,但不能 aspnet_Users。我是不是在我的存储过程中做错了什么导致它不起作用?
CREATE PROCEDURE [dbo].[DeleteAllUserReferences]
@UserName NVARCHAR(256),
@Id NVARCHAR(128),
@Role NVARCHAR(256),
@RowsAffected int OUTPUT
AS BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
EXEC aspnet_Users_DeleteUser 'mainwebsite',@UserName,15,@RowsAffected output
BEGIN TRANSACTION
DELETE FROM [AspNetUsers] WHERE Id = @Id
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@trancount > 0
ROLLBACK TRANSACTION
EXEC error_handler_sp
RETURN 55555
END CATCH
RETURN 0
注意:当我调用它时,aspnet_Users_DeleteUser 尚未在 asp.net 中执行,而是在 visual studio 中从 SQL 服务器资源管理器手动执行。编辑:我忘记了下面的错误处理程序:
CREATE PROCEDURE error_handler_sp AS
DECLARE @errmsg nvarchar(2048),
@severity tinyint,
@state tinyint,
@errno int,
@proc sysname,
@lineno int
SELECT @errmsg = error_message(), @severity = error_severity(), -- 10
@state = error_state(), @errno = error_number(),
@proc = error_procedure(), @lineno = error_line()
IF @errmsg NOT LIKE '***%' -- 11
BEGIN
SELECT @errmsg = '*** ' + coalesce(quotename(@proc), '<dynamic SQL>') +
', ' + ltrim(str(@lineno)) + '. Errno ' +
ltrim(str(@errno)) + ': ' + @errmsg
RAISERROR(@errmsg, @severity, @state)
END
ELSE
RAISERROR(@errmsg, @severity, @state)
原来我需要将 UserName 字段添加到列表视图的 DataKeyNames 属性 并且它起作用了!
我有一个使用 aspnet_regsql 的数据库设置,我正在使用 visual studio 2013 中包含的 Web 表单模板。我正在尝试从 aspnet_Users 和 AspNetUsers 中删除。但是,我需要使用存储过程,因为我要从两个不同的表中删除。我可以从 AspNetUsers 中删除用户,但不能 aspnet_Users。我是不是在我的存储过程中做错了什么导致它不起作用?
CREATE PROCEDURE [dbo].[DeleteAllUserReferences]
@UserName NVARCHAR(256),
@Id NVARCHAR(128),
@Role NVARCHAR(256),
@RowsAffected int OUTPUT
AS BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
EXEC aspnet_Users_DeleteUser 'mainwebsite',@UserName,15,@RowsAffected output
BEGIN TRANSACTION
DELETE FROM [AspNetUsers] WHERE Id = @Id
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@trancount > 0
ROLLBACK TRANSACTION
EXEC error_handler_sp
RETURN 55555
END CATCH
RETURN 0
注意:当我调用它时,aspnet_Users_DeleteUser 尚未在 asp.net 中执行,而是在 visual studio 中从 SQL 服务器资源管理器手动执行。编辑:我忘记了下面的错误处理程序:
CREATE PROCEDURE error_handler_sp AS
DECLARE @errmsg nvarchar(2048),
@severity tinyint,
@state tinyint,
@errno int,
@proc sysname,
@lineno int
SELECT @errmsg = error_message(), @severity = error_severity(), -- 10
@state = error_state(), @errno = error_number(),
@proc = error_procedure(), @lineno = error_line()
IF @errmsg NOT LIKE '***%' -- 11
BEGIN
SELECT @errmsg = '*** ' + coalesce(quotename(@proc), '<dynamic SQL>') +
', ' + ltrim(str(@lineno)) + '. Errno ' +
ltrim(str(@errno)) + ': ' + @errmsg
RAISERROR(@errmsg, @severity, @state)
END
ELSE
RAISERROR(@errmsg, @severity, @state)
原来我需要将 UserName 字段添加到列表视图的 DataKeyNames 属性 并且它起作用了!