データベースからエンティティコードファーストを使用しています。 これは私のuser
モデルです。エンティティフレームワークのコードデータベースからの最初のコードデータベースの「ビット」として指定されたフィールドの属性を変更するための移行を実行します。
public partial class User
{
//other fields
[Required]
[MaxLength(15)]
public string Passkey { get; set; }
[Required]
public bool isAdmin { get; set; }
}
私は、これが変更された形態である(public string Passkey { get; set; }
としてモデルにstring
にbyte
からタイプを変更することにより、私はこれは、varbinary
からvarchar
にUsers
表にPasskey
列を変更したい場合は、以下に生成されたコード)。私はデータ型を更新することができました。
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
と設定されています。このrequired
検証を削除し、デフォルト値を0に設定したいと思います。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
として指定されたフィールドを更新するための正しい構文は何ですか?
の移行にデフォルト値を設定することができます'Passkey'列の更新が可能になりました。エラーは 'isAdmin'フィールドの型を更新するための構文です。 –
Sql()を使うことができるはずです。 'Sql(" ALTER TABLE dbo.Users ALTER COLUMN isAdmin BIT ") – Stuart