2016-11-24 14 views
0

2つのテーブルからレコードを削除する必要があります(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

あなたはアカウントオブジェクトをチェック介してユーザの詳細情報を見つけ、それを削除する必要があり、修正された方法は、あなたが、あなたはデータを削除するには、SQLテーブルのトリガを使用することができ、バックエンドからの削除を実行したい場合は

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"); 
} 

のようになります。チェックテーブルからのレコードの削除に基づいてユーザーテーブル内にあるか、または両方のテーブルからレコードを削除するためにストアドプロシージャを使用することもできます。

関連する問題