I like keeping my database schema as clean and readable as possible, and one of the things I do is use a schema name to group related functionality.
I’ve been doing a fair bit of work with ASP.NET Identity recently, and one of the things was to add the generated tables for identity into their own schema. Moreover, I also wanted to change the name of the tables. This is a snap using Code First – all you need to do (in your IdentityDbContext derived class) is the following…
modelBuilder.Entity<DbUser>().ToTable("Users", "AUTH");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "AUTH");
modelBuilder.Entity<IdentityUserLogin>().ToTable("ExternalLogins", "AUTH");
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "AUTH");
modelBuilder.Entity<IdentityRole>().ToTable("Roles", "AUTH");
Make sure you call the base class OnModelCreating method before including these changes. With that you’ll get a nice set of tables inside SQL server…
I realise that this will mean that I need to be careful when installing a new version of ASP.NET Identity (to ensure that the override still works), but I’d rather pay that price and have a ‘clean’ schema.