0

VS 2017(バージョン15.5)で新しいASP.NETコア2 MVCプロジェクトを作成し、ユーザーIDタイプをstringからGuidに変更しました)ユーザーに名前を付け、私のモデルを追加し、その後Entity Framework - オブジェクト 'PK_AspNetUserTokens'が 'UserId'列に依存しています

Add-Migration Init 
Update-Database 

が、それはエラーを生成し、データベースが作成されません。

public class ApplicationDbContext : IdentityDbContext<User, IdentityRole<Guid>, Guid> 
{ 
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
     : base(options) 
    { 
    } 

    public DbSet<TvShow> TvShows { get; set; } 
    public DbSet<Episode> Episodes { get; set; } 
    public DbSet<Subscription> Subscriptions { get; set; } 
    public DbSet<Notification> Notifications { get; set; } 
    public DbSet<Genre> Genres { get; set; } 
    public DbSet<TvShowGenre> TvShowGenre { get; set; } 

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

     builder.Entity<Subscription>() 
      .HasKey(c => new { c.TvShowId, c.UserId }); 

     builder.Entity<TvShowGenre>() 
      .HasKey(c => new { c.TvShowId, c.GenreId }); 
    } 
} 

はここに私のマイグレーションクラスです(のみアップ法):

public partial class Init : Migration 
{ 
    protected override void Up(MigrationBuilder migrationBuilder) 
    { 
     migrationBuilder.DropIndex(
      name: "UserNameIndex", 
      table: "AspNetUsers"); 

     migrationBuilder.DropIndex(
      name: "IX_AspNetUserRoles_UserId", 
      table: "AspNetUserRoles"); 

     migrationBuilder.DropIndex(
      name: "RoleNameIndex", 
      table: "AspNetRoles"); 

     migrationBuilder.AlterColumn<Guid>(
      name: "UserId", 
      table: "AspNetUserTokens", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "Id", 
      table: "AspNetUsers", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "RoleId", 
      table: "AspNetUserRoles", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "UserId", 
      table: "AspNetUserRoles", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "UserId", 
      table: "AspNetUserLogins", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "UserId", 
      table: "AspNetUserClaims", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "Id", 
      table: "AspNetRoles", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.AlterColumn<Guid>(
      name: "RoleId", 
      table: "AspNetRoleClaims", 
      nullable: false, 
      oldClrType: typeof(string)); 

     migrationBuilder.CreateTable(
      name: "Genres", 
      columns: table => new 
      { 
       Id = table.Column<long>(nullable: false) 
        .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 
       Genres = table.Column<int>(nullable: false), 
       IsFirst = table.Column<bool>(nullable: false) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_Genres", x => x.Id); 
      }); 

     migrationBuilder.CreateTable(
      name: "Notifications", 
      columns: table => new 
      { 
       Id = table.Column<long>(nullable: false) 
        .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 
       CreateDate = table.Column<DateTime>(nullable: false), 
       Message = table.Column<string>(nullable: true), 
       Seen = table.Column<bool>(nullable: false), 
       UserId = table.Column<Guid>(nullable: false) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_Notifications", x => x.Id); 
       table.ForeignKey(
        name: "FK_Notifications_AspNetUsers_UserId", 
        column: x => x.UserId, 
        principalTable: "AspNetUsers", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
      }); 

     migrationBuilder.CreateTable(
      name: "TvShows", 
      columns: table => new 
      { 
       Id = table.Column<long>(nullable: false) 
        .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 
       ProductionYear = table.Column<string>(nullable: true), 
       Status = table.Column<int>(nullable: false), 
       Title = table.Column<string>(nullable: true) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_TvShows", x => x.Id); 
      }); 

     migrationBuilder.CreateTable(
      name: "Episodes", 
      columns: table => new 
      { 
       Id = table.Column<long>(nullable: false) 
        .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 
       BroadcastDate = table.Column<DateTime>(nullable: true), 
       Duration = table.Column<TimeSpan>(nullable: true), 
       Number = table.Column<int>(nullable: true), 
       Season = table.Column<string>(nullable: true), 
       Title = table.Column<string>(nullable: true), 
       TvShowId = table.Column<long>(nullable: false) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_Episodes", x => x.Id); 
       table.ForeignKey(
        name: "FK_Episodes_TvShows_TvShowId", 
        column: x => x.TvShowId, 
        principalTable: "TvShows", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
      }); 

     migrationBuilder.CreateTable(
      name: "Subscriptions", 
      columns: table => new 
      { 
       TvShowId = table.Column<long>(nullable: false), 
       UserId = table.Column<Guid>(nullable: false) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_Subscriptions", x => new { x.TvShowId, x.UserId }); 
       table.ForeignKey(
        name: "FK_Subscriptions_TvShows_TvShowId", 
        column: x => x.TvShowId, 
        principalTable: "TvShows", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
       table.ForeignKey(
        name: "FK_Subscriptions_AspNetUsers_UserId", 
        column: x => x.UserId, 
        principalTable: "AspNetUsers", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
      }); 

     migrationBuilder.CreateTable(
      name: "TvShowGenre", 
      columns: table => new 
      { 
       TvShowId = table.Column<long>(nullable: false), 
       GenreId = table.Column<long>(nullable: false) 
      }, 
      constraints: table => 
      { 
       table.PrimaryKey("PK_TvShowGenre", x => new { x.TvShowId, x.GenreId }); 
       table.ForeignKey(
        name: "FK_TvShowGenre_Genres_GenreId", 
        column: x => x.GenreId, 
        principalTable: "Genres", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
       table.ForeignKey(
        name: "FK_TvShowGenre_TvShows_TvShowId", 
        column: x => x.TvShowId, 
        principalTable: "TvShows", 
        principalColumn: "Id", 
        onDelete: ReferentialAction.Cascade); 
      }); 

     migrationBuilder.CreateIndex(
      name: "UserNameIndex", 
      table: "AspNetUsers", 
      column: "NormalizedUserName", 
      unique: true, 
      filter: "[NormalizedUserName] IS NOT NULL"); 

     migrationBuilder.CreateIndex(
      name: "RoleNameIndex", 
      table: "AspNetRoles", 
      column: "NormalizedName", 
      unique: true, 
      filter: "[NormalizedName] IS NOT NULL"); 

     migrationBuilder.CreateIndex(
      name: "IX_Episodes_TvShowId", 
      table: "Episodes", 
      column: "TvShowId"); 

     migrationBuilder.CreateIndex(
      name: "IX_Notifications_UserId", 
      table: "Notifications", 
      column: "UserId"); 

     migrationBuilder.CreateIndex(
      name: "IX_Subscriptions_UserId", 
      table: "Subscriptions", 
      column: "UserId"); 

     migrationBuilder.CreateIndex(
      name: "IX_TvShowGenre_GenreId", 
      table: "TvShowGenre", 
      column: "GenreId"); 

     migrationBuilder.AddForeignKey(
      name: "FK_AspNetUserTokens_AspNetUsers_UserId", 
      table: "AspNetUserTokens", 
      column: "UserId", 
      principalTable: "AspNetUsers", 
      principalColumn: "Id", 
      onDelete: ReferentialAction.Cascade); 
    } 
} 

答えて

0

は、私はあなたと同じ問題に直面して

The object 'PK_AspNetUserTokens' is dependent on column 'UserId'. 
ALTER TABLE ALTER COLUMN UserId failed because one or more objects access this column. 

は、ここに私の状況です。私は "マイグレーション"フォルダを削除して、もう一度マイグレーションを追加します。以前の移行の変更のために、それに応じてFKを作成することができませんでした。

関連する問題