0

自分で作成したコンテキストの新しいマイグレーションを作成するために、次のコマンドを実行しようとしています。私はこのコマンドを実行します。MVCコアアプリケーションでのマイグレーション実行中のエラー

dotnet ef migrations add MusicContextCreation --context MusicContext 

ここは自分の音楽コンテキストクラスです。これが私が移行を追加しようとしていることです。

using Microsoft.EntityFrameworkCore; 

namespace MusicianProject.Models.Contexts 
{ 
    public class MusicContext : DbContext 
    { 
     public MusicContext(DbContextOptions<MusicContext> options) : base(options) 
     { 

     } 

     protected override void OnModelCreating(ModelBuilder builder) 
     { 
      base.OnModelCreating(builder); 

      //builder.Entity<Band>().HasMany<BandMember>(); 
      //builder.Entity<Band>().HasMany<Album>(band => band.Albums); 
      builder.Entity<Band>().ToTable("Band"); 
      //builder.Entity<BandMember>().HasOne<User>(bandmember => bandmember.User); 
      builder.Entity<BandMember>().ToTable("BandMember"); 
      builder.Entity<Album>().ToTable("Album"); 
      builder.Entity<Genre>().ToTable("Genre"); 
     } 

     public DbSet<Band> Bands { get; set; } 
     public DbSet<Genre> Genres { get; set; } 
     public DbSet<BandMember> BandMembers { get; set; } 
     public DbSet<Album> Albums { get; set; } 

    } 
} 

このコマンドを実行すると、次のエラーメッセージが表示されます。

エンティティタイプMicrosoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserLoginには、主キーを定義する必要があります。

私が理解していないことは、私が他の同様の質問で回答として見た基本クラスOnModelCreatingを呼び出したことです。私が理解していないことは、私がアイデンティティユーザーのために持っている別のコンテキストが、私にこの問題を与えないということです。そして、実際にアイデンティティテーブルを設定します。

必要に応じてこのコンテキストで使用されているクラスを追加できますが、混乱したくないのでまだ追加していません。コメントで、クラスがdbsetコレクションで定義されていることを確認する必要があるかどうかを教えてください。

答えて

1

IdentityDbContextDbContextではなく)から継承する必要があります。これは、適切なOnModelCreatingの内容と、流暢なIdentityクラス構成です。

あなたは二つの異なるDbContexts、ユーザー用と他のクラスの他のを持ちたい場合 - あなたは異なるコンテキストでクラス間の参照を持つべきではないが、my answer here

+0

を読んで、私はまだIdentityDbContextおよびIから継承したクラスを変更しました同じエラーが発生します。 DbSetsを自分のIdentityDbContextに移動することをお勧めしますか?私はなぜ彼らは別々にしなければならないのか分からない。 – ddeamaral

+0

"私のIdentityDbContext"とは何ですか? 'Microsoft.AspNetCore.Identity.EntityFramework'名前空間のものから継承する必要があります。[here](https://docs.microsoft.com/en-us/aspnet/core/migration/identity#configure-identity-and-メンバーシップ) – Dmitry

+0

申し訳ありませんが、私は "UserContext"クラスを意味しました。私は自分のMusicContextをIdentityDbContextから継承するように変更しましたが、まだ動作しませんでした。だから私はバンドとバンドメンバーセットをコメントアウトし、それは働いた(私はこれは、彼らがIdentityUserから継承する私のUserクラスへの参照を持っていたためだと仮定している)。 – ddeamaral

関連する問題