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?
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.
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.
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.
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
Now the answer is Yes:
AddColumn("[table name]", "[column name]", c => c.Boolean(nullable: false, defaultValue: false));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With