Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
535 views
in Technique[技术] by (71.8m points)

c# - 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...