我試圖運行以下命令爲我自己創建的上下文創建新的遷移。我運行這個命令。在MVC Core應用程序中運行遷移時出錯
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,我仍然繼承得到相同的錯誤。你是否建議我將DbSets移至我的IdentityDbContext?我不明白爲什麼他們必須分開。 – ddeamaral
你的意思是「我的IdentityDbContext」?您應該從'Microsoft.AspNetCore.Identity.EntityFramework'命名空間中的一個繼承,請參閱[這裏](https://docs.microsoft.com/en-us/aspnet/core/migration/identity#configure-identity-and-會員) – Dmitry
對不起,我的意思是我的「UserContext」類。我改變了我的MusicContext從IdentityDbContext繼承,它仍然無法工作。所以我評論了Band和Band成員集,並且它工作了(我認爲這是因爲他們引用了從IdentityUser繼承的我的User類)。 – ddeamaral