2017-08-22 5 views
1
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
      { 
       //base.OnModelCreating(modelBuilder); 
       modelBuilder.HasDefaultSchema("dbo"); 
       modelBuilder.Entity<IdentityUser>().ToTable("User", "dbo"); 
       modelBuilder.Entity<ApplicationUser>().ToTable("User", "dbo"); 

       modelBuilder.Entity<IdentityRole>().ToTable("Role", "dbo"); 
       modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole", "dbo"); 
       modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim", "dbo"); 
       modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin", "dbo"); 

       modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId); 
       modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id); 
       modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId }); 

       modelBuilder.Entity<MyClass>().HasRequired<ApplicationUser>(s => s.applicationUser) 
      .WithMany(t => t.MyClass) 
      .HasForeignKey(t => t.userID); 

        modelBuilder.Entity<MyClass>().ToTable("MyClass", "MyApp"); 
//start of code added 
       modelBuilder.Entity<MyClass>().HasRequired<ApplicationUser>(s => s.applicationUser) 
      .WithMany(t => t.myClass) 
      .HasForeignKey(t => t.userID); 
//end of code added 
     } 
    } 

このメソッドは、WebアプリケーションプロジェクトからInfrastructureプロジェクトに再配置されたクラス(ApplicationUser - ASP.NET Identityの一部)に含まれているため、MyClass(コードの最後の行を参照)を定義。ApplicationUserクラスをInfrastructureレイヤーに再配置することは悪い考えですか?

私はすべてのEFコードファーストテーブル作成コードを1か所に持つことができるように、ApplicationUserクラスをインフラストラクチャレイヤーに再配置することをお勧めしますか?

私の質問は、この1のようになります。IdentityUser in Data layer

+0

本当にそのメソッドに 'MyClass'が必要ですか? –

+0

@Mert Akcakayaは、次の2つのコメントのコードを参照してください:コードの開始が追加され、コードの最後が追加されました。 MyClassの外部キーとしてIDを追加しようとしています。それは理にかなっていますか? – w0051977

+0

あなたは良い選択があったと思う –

答えて

0

私はアーキテクチャについて知っているすべては、私はアプリケーション層で接続されたサービスとしてとしてのアイデンティティサーバーを取ることを好みます。

なぜですか?あなたのアプリケーションに必須のサービスがある場合や、明日は別のサービスによって変更される可能性があります。

必須である場合、それをインフラストラクチャに移動し続けますが、変更可能な場合は、アプリケーションレイヤでそのサービスに対応させてサービスを作成し、コードの依存関係を回避してください。

これ以上の仕事はありますが、将来は頭痛が減ります。

お手伝いをします。

関連する問題