1

asp.net mvc プログラムでコードの最初の移行を使用しています。

プロジェクトで提供されているデフォルトの認証とロールを使用しています。

移行を有効にすると、すべてのテーブルなどを生成する移行クラスが自動的に生成されました。

これは、私が編集したい特定のテーブルの例です。

 CreateTable(
            "dbo.AspNetUserRoles",
            c => new
                {
                    UserId = c.String(nullable: false, maxLength: 128),
                    RoleId = c.String(nullable: false, maxLength: 128),
                })
            .PrimaryKey(t => new { t.UserId, t.RoleId })
            .ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true)
            .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
            .Index(t => t.RoleId)
            .Index(t => t.UserId);

ここで、このテーブルに説明フィールドを追加したいと思います。データベースに追加するだけなら簡単ですが、コードの最初の移行が失われます。

1> エンティティ フレームワークは、最初の移行のすべてのコマンドをどこで取得しますか? 私のプロジェクトには、作成するテーブルを指定するモデルを確認できるモデルがないためです。

2> 生成された元のテーブルの一部を変更または編集するにはどうすればよいですか? 初期移行フォルダーを編集しようとしましたが、うまくいきませんか?

(私の考えですが) ロールとユーザーのモデルがフレームワークに格納されていて、そこからテーブルの構造が取得されているのではないでしょうか? もしそうなら、デフォルトのモデルを拡張して属性を追加することはできませんか? 私はあなたがApplicationUserのためにそれを行うことができることを知っているので、私は以前にそうしました.これはその例です:

 // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
public class ApplicationUser : IdentityUser
{
    [Required]
    [MaxLength(50)]
    [Display(Name = "Email Address")]
    public string email { get; set; }
 }

それが、メールアドレスフィールドをデフォルトユーザーに追加する方法です。ロールでもこれを行うことはできませんか。

4

1 に答える 1