web-dev-qa-db-ja.com

移行EFコア2.0の実行中にエラーが発生し、IDIDが文字列から整数に変更されました

シナリオ:

同僚からASP.NETCOREで自動生成されたプロジェクトを受け取りました。アカウント/マネージドサービス用に自動生成されたコードがあります。このコードには、ApplicationUserクラス、DBContext、および00000000000000_CreateIdentitySchema.csと20180323155805_Snapshot.csの移行フォルダーが含まれています。 Userクラスを整数IDに変更しようとしています。これを行うために、IdentityUserにジェネリックを追加しました。

public class ApplicationUser : IdentityUser**<int>**
{
}

ApplicationRoleクラスも、移行ファイルで作成される前に作成する必要がありました。

public class ApplicationRole : IdentityRole<int>
{
}

また、コンテキストを変更しました。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, 
    **ApplicationRole, int**>

移行ファイルには、ログインスキームが作成されています。変更を追加した後、新しい移行を追加します。移行の追加中に、次のエラーが発生しました。

列のIDENTITYプロパティを変更するには、列を削除して再作成する必要があります。

7
zolty13

生成された移行を段階的に更新するには、更新する必要があります。 AlterColumn呼び出しを次の操作に置き換えます。

  1. 一時的な名前で新しい列を追加します
  2. 元の列を削除します
  3. 元の列名を使用して新しい列の名前を変更します

また、列を参照するすべての制約を再構築(削除して再作成)する必要がある場合もあります。

それは些細なことではありません、それがEFが現在それを処理しない理由です。機能リクエスト #329 これを自動的に処理するようにEFを更新することです。

6
bricelam