0

データベースのエンティティ コード ファーストを使用しています。これが私のuserモデルです。

    public partial class User
    {
      //other fields
      [Required]
      [MaxLength(15)]
      public string Passkey { get; set; }
      [Required]
      public bool isAdmin { get; set; }  
    }

以下のコードは、テーブルのPasskey列をからに変更したいときに生成されました。これは、モデルの型を から に変更することで行いました(これは変更された形式です)。データ型を更新できました。Usersvarbinaryvarcharbytestringpublic string Passkey { get; set; }

public partial class AddPasskey : DbMigration
        {
            public override void Up()
            {
                AlterColumn("dbo.Users", "Passkey", c => c.String(nullable: false, maxLength: 15));
            }

            public override void Down()
            {
                AlterColumn("dbo.Users", "Passkey", c => c.Binary(nullable: false, maxLength: 15));
            }
        }

この「isAdmin」プロパティを に設定していrequiredます。この検証を削除し、デフォルト値を 0 に設定したいと考えています。required移行用に自動生成されたコードをコピーしてPasskey変更しました。以下は変更されたコードですが、これは間違っています。

    public partial class AddisAdmin : DbMigration
        {
            public override void Up()
            {
                AlterColumn("dbo.Users", "isAdmin", c => c.bool(nullable: false, defaultValue:0));
            }

            public override void Down()
            {
                AlterColumn("dbo.Users", "isAdmin", c => c.bool(nullable: false));
            }
        }

この移行を実行するにはどうすればよいですか? bitデータベースで指定されたフィールドを更新するための正しい構文は何ですか?

4

3 に答える 3

0

Enable-Migrations最初に、これにより Migrations ディレクトリが生成されます。これは既に行っている可能性があります。

移行を構成したら、 を実行して実行できますUpdate-Database

[ツール] メニューの [パッケージ マネージャー コンソール] から上記のコマンドを実行します。

また、データ型を変更するには、Sql()メソッドを介して SQL を実行することもできます。

Sql("ALTER TABLE dbo.Users ALTER COLUMN isAdmin BIT")

于 2016-10-19T08:30:52.720 に答える
0

手動で追加したコードを削除し、add-migrationコマンドを再度実行して新しい移行を追加すると、必要な変更を加えた新しいファイルが作成されます。そこで変更し、デフォルト値をゼロに設定できます

于 2016-10-19T11:41:59.340 に答える