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
本当にそのメソッドに 'MyClass'が必要ですか? –
@Mert Akcakayaは、次の2つのコメントのコードを参照してください:コードの開始が追加され、コードの最後が追加されました。 MyClassの外部キーとしてIDを追加しようとしています。それは理にかなっていますか? – w0051977
あなたは良い選択があったと思う –