2016-03-29 12 views
0

2つのMVC5アプリケーションに1つのデータベースを使用する必要があります。だから私はデフォルトのアイデンティティテーブルAspNetUsersなどを作成する1つのアプリケーションを持っています今別のアプリケーションから別のアイデンティティテーブルを作成したい。そのために、私はAspNetUsersから "BackOfficeApplicationUsers"にテーブル名の名前を変更しようとしています。以下は私のコード同じデータベースを使用する2つのMVC 5アプリケーションのIDテーブル

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    modelBuilder.Entity<IdentityRole>().ToTable("BackOfficeApplicationRoles"); 
    modelBuilder.Entity<ApplicationUser>().ToTable("BackOfficeApplicationUsers"); 
    modelBuilder.Entity<IdentityUserClaim>().ToTable("BackOfficeApplicationUserClaims"); 
    modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.UserId, r.RoleId }).ToTable("BackOfficeApplicationUserRoles"); 
    modelBuilder.Entity<IdentityUserLogin>().HasKey(l => new { l.LoginProvider, l.ProviderKey, l.UserId }).ToTable("BackOfficeApplicationUserLogins"); 
} 

私はエラー「AspNetUsersテーブルが既に存在する」を取得私は更新-データベースんです。私は2番目のアプリケーションからAspNetUsersテーブルを作成しようとしてから名前を変更しようとしていることが分かります。両方のアプリケーションが個別のIDテーブルを持つように、この問題の解決策を教えてください。おかげ

+0

ToTable()は、このように二つの引数を取ることができます。modelBuilder.Entity ()ToTable( "ユーザー"、 "dbo");あなたはこの1つを試してdboを変更できますか? – theMost1ted

+0

@ theMost1tedいいえ、これは動作しません。私はupdate-database-scriptを通してスクリプトをチェックしました。最初にデフォルトスキーマdboでテーブルを作成し、スキーマ "backoffice"に名前を変更します – sanjeev

答えて

0

は、各MVCサイトが異なるスキーマを使用してのappSettingsに基づいてスキーマを設定するOnModelCreatingを簡素化しておいてください。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    var schemaName = ConfigurationManager.AppSettings["SchemaName"] ?? "dbo"; 
    dbModelBuilder.HasDefaultSchema(schemaName); 
    base.OnModelCreating(dbModelBuilder); 
} 
+0

いいえ、これは機能しません。私はupdate-database-scriptを通してスクリプトをチェックしました。最初にデフォルトスキーマdboを持つテーブルを作成し、スキーマ "backoffice"に名前を変更します。 – sanjeev

関連する問題