Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 =>         {             c.HasMaxLength(255);              if (!c.ClrPropertyInfo.IsDefined(typeof (NullableAttribute), false))             {                 c.IsRequired();                 // 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?

like image 489
ECC-Dan Avatar asked Nov 22 '13 03:11

ECC-Dan


People also ask

Does Entity Framework have default value?

The Entity Framework Core Fluent API HasDefaultValue method is used to specify the default value for a database column mapped to a property. The value must be a constant.

How do I set default value?

Set a default valueRight-click the control that you want to change, and then click Properties or press F4. Click the All tab in the property sheet, locate the Default Value property, and then enter your default value.

Which constraint can be used to provide a default value?

The DEFAULT constraint is used to set a default value for a column. The default value will be added to all new records, if no other value is specified.


2 Answers

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) {     modelBuilder.Entity<Blog>()         .Property(b => b.Rating)         .HasDefaultValue(3); } 

EF Core 2.0 was released on 14 August 2017

like image 196
Colin Avatar answered Sep 20 '22 23:09

Colin


Now the answer is Yes:

AddColumn("[table name]",            "[column name]",            c => c.Boolean(nullable: false, defaultValue: false)); 
like image 23
Gh61 Avatar answered Sep 17 '22 23:09

Gh61