从AspNetUsers中删除列

时间:2017-03-16 23:20:20

标签: asp.net-mvc entity-framework

我创建了一个数据库上下文。我想删除表AspNetUsers中的一些列,例如PhoneNumberPhoneNumberConfirmed,因为在我的申请中没有必要。

namespace TestTest.Infrastuctures
{
    public class TestContext:IdentityDbContext<ApplicationUser>
    {
        public TestContext()
            : base("TestContext")
        {

        }
        public static TestContext Create()
        {
            return new TestContext();
        }
        public virtual DbSet<Category> Categories { get; set; }
        public virtual DbSet<Product> Products { get; set; }

    }

    public class ApplicationUserEntityTypeConfiguration : EntityTypeConfiguration<ApplicationUser>
    {
        public ApplicationUserEntityTypeConfiguration()
        {
            Ignore(p => p.PhoneNumber);
            Ignore(p => p.PhoneNumberConfirmed);
            Ignore(p => p.EmailConfirmed);
            Ignore(p => p.TwoFactorEnabled);

        }
    }
}

代码工作正常,但尚未删除AspNetUsers中的选定列。enter image description here

欢迎任何帮助或建议。

更新

这段代码解决了我的问题:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            var user = modelBuilder.Entity<ApplicationUser>();
            user.Ignore(u => u.EmailConfirmed);
            user.Ignore(u => u.PhoneNumber);
            user.Ignore(u => u.PhoneNumberConfirmed);

            var identityUserRole = modelBuilder.Entity<IdentityUserRole>();
            identityUserRole.HasKey(r => new { r.UserId, r.RoleId });

            var identityUserLogin = modelBuilder.Entity<IdentityUserLogin>();
            identityUserLogin.HasKey(l => new { l.LoginProvider, l.ProviderKey, l.UserId });

            var claims = modelBuilder.Entity<IdentityUserClaim>();

       }

2 个答案:

答案 0 :(得分:2)

我相信你可以这样做但不一定使用EntityTypeConfiguration方法。而是尝试覆盖上下文中的OnModelCreating方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<IdentityUser>()
        .Ignore(p => p.PhoneNumber)
        .Ignore(p => p.PhoneNumberConfirmed)
        .Ignore(p => p.EmailConfirmed)
        .Ignore(p => p.TwoFactorEnabled);    
}

答案 1 :(得分:0)

转到ApplicationUser的类,删除PhoneNumber,PhoneNumberConfirmed的属性。

添加迁移,然后更新数据库。