ASP.NET MVC第015天_是不是用了Identity後就一定要接受它自動建立的DB跟命名?不想用到一個DB以上怎麼辦
如題
剛開始接觸Identity時候一定會覺得這是個不太節省資源的身分認證框架
會強迫你自動用它們產生的Db 但你既有系統一定也會有其他資料庫和一些資料表
有其他業務處裡需求
但這樣子可能就要用到兩個DB,通常都會對於資源有限情況下
會想研究是不是可以讓Identity能把預設生成的tables
在我們既有的DB中長出來而不要額外需要花資源多一個DB
(畢竟租店面你也不太可能你原本賣麵食的只是為了多賣一些飯食類的額外擴租另一個店面,雲端資料庫租用也是一樣概念各個都要錢~)
有些甚至不喜歡預設table的命名
如何更改預設table名稱
預設會產生的table名稱如下
AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
AspNetUsers
可至你的DbContext衍生Class(繼承自IdentityDbContext<自定義的使用者Class>)
去對OnModelCreating做覆寫
1 2 3 4 5 6 7 8 9 | protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); //must at the begin modelBuilder.Entity<User>().ToTable("CustomUsers"); modelBuilder.Entity<IdentityRole>().ToTable("CustomRoles"); modelBuilder.Entity<IdentityUserRole>().ToTable("CustomUserRoles"); modelBuilder.Entity<IdentityUserClaim>().ToTable("CustomUserClaims"); modelBuilder.Entity<IdentityUserLogin>().ToTable("CustomUserLogins"); } |
如何在既有的DB做table生成
這裡其實就去觀察一下你目前資料庫位於何處還有吃的連線字串是捨麼
比方我MSSQL中 存在一個DB 叫做mvcblog
專案內web.config就去擴充
一樣在DbContext衍生Class(繼承自IdentityDbContext<自定義的使用者Class>)
對建構式後面nameOrConnectionString的參數做調整即可
也有一些疑問類似挖那我是不是一定都要先跑過註冊的表單送出才有辦法產生DB
其實不然
ASP.NET Identity 2 是藉由Entity Framework Code First設計的
只要會EF的一些先備知識指令使用就可生成DB跟table了
enable-migrations
add-migration {自行命名migration名稱}
update-database -verbose
Ref:
How to create ASP.Net Identity tables inside existing database?
How can I change the table names when using ASP.NET Identity?
修改 ASP.NET Identity 預設的 Table Name
ASP.NET Identity 搭配 DataBase first 與 SQL Server
留言
張貼留言