2016-11-24 60 views
0

我需要从两个表中删除记录(Asp.netUser表 - 保存所有注册详细信息&检查帐户表 - 保存所有用户的详细信息)。删除操作方法仅允许在检查账户表上删除处理。我应该写什么查询/代码来删除所有表中的记录?从多个表中删除用户记录ASP.Net mvc

删除操作方法

public ActionResult Delete(int? id) 
     { 
      if (id == null) 

       return HttpNotFound(); 
       var del = db.checkAccounuts.Find(id); 

      if (del == null) 
       return HttpNotFound(); 

      db.checkAccounuts.Remove(del); 
      db.SaveChanges(); 

      return RedirectToAction("ViewAccounts"); 

     } 

记录可以从该表

CREATE TABLE [dbo].[CheckingAccount] (
    [Id]   INT    IDENTITY (1, 1) NOT NULL, 
    [AccountNumber] VARCHAR (10) NOT NULL, 
    [FirstName]  NVARCHAR (MAX) NOT NULL, 
    [LastName]  NVARCHAR (MAX) NOT NULL, 
    [Balance]  DECIMAL (18, 2) NOT NULL, 
    [AppUserId]  NVARCHAR (MAX) NOT NULL, 
    [User_Id]  NVARCHAR (128) NULL, 
    CONSTRAINT [PK_dbo.CheckingAccounts] PRIMARY KEY CLUSTERED ([Id] ASC), 
    CONSTRAINT [FK_dbo.CheckingAccounts_dbo.AspNetUsers_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [dbo].[AspNetUsers] ([Id]) 
); 

但用户细节仍然在这个表中删除!

CREATE TABLE [dbo].[AspNetUsers] (
    [Id]     NVARCHAR (128) NOT NULL, 
    [Email]    NVARCHAR (256) NULL, 
    [EmailConfirmed]  BIT   NOT NULL, 
    [PasswordHash]   NVARCHAR (MAX) NULL, 
    [SecurityStamp]  NVARCHAR (MAX) NULL, 
    [PhoneNumber]   NVARCHAR (MAX) NULL, 
    [PhoneNumberConfirmed] BIT   NOT NULL, 
    [TwoFactorEnabled]  BIT   NOT NULL, 
    [LockoutEndDateUtc] DATETIME  NULL, 
    [LockoutEnabled]  BIT   NOT NULL, 
    [AccessFailedCount] INT   NOT NULL, 
    [UserName]    NVARCHAR (256) NOT NULL, 
    [Pin]     NVARCHAR (MAX) NULL, 
    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC) 
); 


GO 
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex] 
    ON [dbo].[AspNetUsers]([UserName] ASC); 

任何帮助将不胜感激!

回答

0

你必须通过支票帐户对象查找用户详细信息,然后将其删除,修改的方法将看起来像

public ActionResult Delete(int? id) 
{ 
    if (id == null) 
     return HttpNotFound(); 

    var del = db.checkAccounuts.Find(id); 

    if (del == null) 
     return HttpNotFound(); 

    aspnetusers user = db.aspnetusers.find(del.User_Id); 

    db.checkAccounuts.Remove(del); 
    db.aspnetusers.remove(user.ID); 
    db.SaveChanges(); 
    return RedirectToAction("ViewAccounts"); 
} 

如果你想从后台执行删除时,可以使用SQL表触发器来删除数据在基于从检查表中删除记录的用户表中,或者也可以使用存储过程从两个表中删除记录,只需从代码中调用存储过程即可。