2016-11-24 59 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表觸發器來刪除數據在基於從檢查表中刪除記錄的用戶表中,或者也可以使用存儲過程從兩個表中刪除記錄,只需從代碼中調用存儲過程即可。