2017-03-17 70 views
0

環境:vs2013 asp.net mvc5與EF6MVC asp.net身份刪除用戶配置文件

項目時,我在表中調用UserManager.DeleteAsync(用戶) 系統默認用戶信息刪除用戶(「用戶「)被刪除,但用戶配置文件表(」UserInfo「)保留在數據庫中。如何刪除它? 任何人都可以幫忙嗎?感謝

這裏是我的代碼:

public class AppUser : IdentityUser 
{ 
.... 
public virtual UserInfo CustomInfo { get; set; } 
} 

public class UserInfo 
{ 
    [Key]   
    public int ID { get; set; } 

    public string FullName { get; set; } 

    ... 

    public string OtherContacts { get; set; } 
} 

public class AppUserStore : UserStore<AppUser> 
{ 
    public AppUserStore(AccountDbContext context) 
     : base(context) 
    { 
    } 

    public override Task<AppUser> FindByIdAsync(string userId) 
    { 
     return Users.Include(u => u.CustomInfo).Include(u => u.Roles).Include(u => u.Claims).Include(u => u.Logins).FirstOrDefaultAsync(u => u.Id == userId); 
    } 
    public override Task<AppUser> FindByNameAsync(string userName) 
    { 
     return Users.Include(u => u.CustomInfo).Include(u => u.Roles).Include(u => u.Claims).Include(u => u.Logins).FirstOrDefaultAsync(u => u.UserName == userName); 
    } 
} 

public class AccountDbContext : IdentityDbContext<AppUser> 
{ 
    public AccountDbContext() 
     : base("CommonDbContext", throwIfV1Schema: false) 
    { 
    } 

    public static AccountDbContext Create() 
    { 
     return new AccountDbContext(); 
    } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Entity<AppUser>() 
      .ToTable("User") 
      .HasRequired(x => x.CustomInfo); 
     modelBuilder.Entity<UserInfo>().ToTable("UserInfo"); 
     modelBuilder.Entity<IdentityRole>().ToTable("Role"); 
     modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim"); 
     modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin"); 
     modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole"); 
    } 

    public IDbSet<UserInfo> UserInfos { get; set; } 
} 
+0

有什麼我可以做AppUserStore像FindByIdAsync和FindByNameAsync? –

回答

0

1.增加DbSet在AccountDbContext

public IDbSet<UserInfo> UserInfos { get; set; } 

2.In AppUserStore:

public override async Task DeleteAsync(AppUser user) 
    { 
     var context = Context as AccountDbContext; 
     context.UserInfos.Remove(user.CustomInfo); 
     context.Users.Remove(user); 
     await context.SaveChangesAsync(); 
    }