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 l
You can set the default value within the constructor
class Foo : Model
{
public bool DefaultBool { get; set; }
public Foo()
{
DefaultBool = true;
}
}
When you create a new Foo
it will set the true value for the property DefaultBool
. This is not a default constraint but it works.
Now the answer is Yes:
AddColumn("[table name]",
"[column name]",
c => c.Boolean(nullable: false, defaultValue: false));
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
I found this example here
public class Person {
private const int DEFAULT_AGE = 18;
private int _age = DEFAULT_AGE;
[DefaultValue(DEFAULT_AGE)]
public int Age {
get { return _age; }
set { _age = value; }
}
}
I found that just using Auto-Property Initializer on entity property is enough to get the job done.
For example:
public class Thing {
public bool IsBigThing{ get; set; } = false;
}