How can set a default value constraint with Entity Framework 6 Code First?

.net c# ef-code-first entity-framework entity-framework-6


In a legacy app, most string properties can't be null and need to have a default value of string.empty.

I know it's possible to do this with migrations, but I'm looking for a way to do this using the fluent configuration interface:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
        modelBuilder.Properties<string>().Configure(c =>

            if (!c.ClrPropertyInfo.IsDefined(typeof (NullableAttribute), false))
                // I want to set a default value (string.empty) here.

Is there any way to do this or I'm doomed to initialize all strings in the entity constructors?

11/22/2013 3:27:51 AM

Accepted Answer

Now the answer is Yes:

AddColumn("[table name]", 
          "[column name]", 
          c => c.Boolean(nullable: false, defaultValue: false));
5/23/2017 12:34:53 PM

Popular Answer

Unfortunately the answer right now is 'No'.

But you can vote for Better support for default values

EDIT 30 Mar 2015: It's coming in EF7... Support database default values in Code First

EDIT 30 Jan 2017: General support for default database values is part of EF Core (the new name for EF7)... Default values

EDIT 17 Jan 2018: I'm not sure why people are commenting that EF7 is still a "pipe dream". EF7 (renamed EF Core) was released on 27th June 2016 and supports the setting of default values in Code First using the FluentAPI like this:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        .Property(b => b.Rating)

EF Core 2.0 was released on 14 August 2017

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow