従来のアプリでは、ほとんどの文字列プロパティをnullにすることはできず、string.emptyのデフォルト値が必要です。
私は移行でこれを行うことができることを知っていますが、流れるような設定インターフェイスを使用してこれを行う方法を探しています:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<string>().Configure(c =>
{
c.HasMaxLength(255);
if (!c.ClrPropertyInfo.IsDefined(typeof (NullableAttribute), false))
{
c.IsRequired();
// I want to set a default value (string.empty) here.
}
}
これを行う方法はありますか、エンティティコンストラクタのすべての文字列を初期化する運命にありますか?
答えは はい :
AddColumn("[table name]",
"[column name]",
c => c.Boolean(nullable: false, defaultValue: false));
残念ながら、現時点での答えは「いいえ」です。
しかし、あなたはcanに投票できます- デフォルト値のより良いサポート
2015年3月30日編集:EF7で登場... Code Firstでデータベースのデフォルト値をサポート
EDIT 2017年1月30日:デフォルトのデータベース値の一般的なサポートは、EF Core(EF7の新しい名前)の一部です... デフォルト値
EDIT 2018年1月17日:なぜEF7はまだ「パイプドリーム」であると人々がコメントしているのか分かりません。 EF7(EF Coreに改名)は2016年6月27日にリリースされ、次のようにFluentAPIを使用してCode Firstのデフォルト値の設定をサポートします。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Rating)
.HasDefaultValue(3);
}
EF Core 2.0は2017年8月14日にリリースされました
コンストラクター内でデフォルト値を設定できます
class Foo : Model
{
public bool DefaultBool { get; set; }
public Foo()
{
DefaultBool = true;
}
}
新しいFoo
を作成すると、プロパティDefaultBool
に真の値が設定されます。これはデフォルトの制約ではありませんが、機能します。