質問: aspNetUserテーブルがないなど、IDがない既存のSQLデータベースに接続しました。それ以降、このようなカスタムログインクラスを使用してこれらを追加しました ``` public class UserLogin : IdentityUser { public int LanguageId { get; set; } public string HQ_PRM_Id { get; set; } } ``` 次に、このようなテーブルを作成するためのマイグレーションを生成しました(単にIDと呼びました) 「dotnet efの移行によりIDが追加されます」 次に、次を使用して移行を実行しました 「dotnet efデータベース更新ID」 これでテーブルが作成されました。しかし、それ以降に追加したユーザークラスに名と姓を追加するのを忘れていました。問題は、新しい移行を実行すると、 データベースにはすでに「AspNetRoles」という名前のオブジェクトがあります。 スキーマを更新し、テーブルを再作成しないように移行に指示するにはどうすればよいですか?それ以外の場合は、まずオブジェクトを手動で削除する必要があります。つまり、データが失われます。 ありがとう
回答: 開発中にモデルが頻繁に変更され、これらのモデル(データベーステーブルを表す)がテーブル自体と同期しなくなります。移行の役割は、データベースとモデルの同期を維持することです。したがって、モデルに変更を加えるたびに、データベーススキーマを段階的に更新する新しい移行を作成する必要があります。 ### 最初の移行 ``` public class UserLogin : IdentityUser { public int LanguageId { get; set; } public string HQ_PRM_Id { get; set; } } ``` `dotnet ef migrations add Identity`このコマンドは、Identityという新しい移行を作成します `dotnet ef database update Identity`このコマンドは、 "Identity"という名前のマイグレーションまでのマイグレーションを実行します。 ### 2回目の移行 ``` public class UserLogin : IdentityUser { public int LanguageId { get; set; } public string HQ_PRM_Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } ``` `dotnet ef migrations add AddNames`このコマンドは、AddNamesと呼ばれる新しい移行を作成します。EFは、既存のテーブルの更新であることを認識する必要があります(したがって、移行は更新のみである必要があります) `dotnet ef database update AddNames`これにより、AddNames移行が実行されます 私は間違いなく件名のMSドキュメントをチェックすることをお勧めします