我试图运行以下命令为我自己创建的上下文创建新的迁移。我运行这个命令。在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