自分で作成したコンテキストの新しいマイグレーションを作成するために、次のコマンドを実行しようとしています。私はこのコマンドを実行します。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コレクションで定義されていることを確認する必要があるかどうかを教えてください。
を読んで、私はまだIdentityDbContextおよびIから継承したクラスを変更しました同じエラーが発生します。 DbSetsを自分のIdentityDbContextに移動することをお勧めしますか?私はなぜ彼らは別々にしなければならないのか分からない。 – ddeamaral
"私のIdentityDbContext"とは何ですか? 'Microsoft.AspNetCore.Identity.EntityFramework'名前空間のものから継承する必要があります。[here](https://docs.microsoft.com/en-us/aspnet/core/migration/identity#configure-identity-and-メンバーシップ) – Dmitry
申し訳ありませんが、私は "UserContext"クラスを意味しました。私は自分のMusicContextをIdentityDbContextから継承するように変更しましたが、まだ動作しませんでした。だから私はバンドとバンドメンバーセットをコメントアウトし、それは働いた(私はこれは、彼らがIdentityUserから継承する私のUserクラスへの参照を持っていたためだと仮定している)。 – ddeamaral