I have a class that looks like this:
[Table("Subscribers", Schema = "gligoran")]
public class Subscriber
{
[Key]
public string Email { get; set; }
[Required]
[DefaultValue(true)]
public bool Enabled { get; set; }
}
When creating a migration to include this class I get:
public partial class AddSubscriberClass : DbMigration
{
public override void Up()
{
CreateTable(
"gligoran.Subscribers",
c => new
{
Email = c.String(nullable: false, maxLength: 128),
Enabled = c.Boolean(nullable: false),
})
.PrimaryKey(t => t.Email);
}
public override void Down()
{
DropTable("gligoran.Subscribers");
}
}
I'd like the Enabled
line to look like this:
Enabled = c.Boolean(nullable: false, defaultValue: true),
Of course I can do this myself, but I'm just asking if there's a way to make Entity Framework do it automatically.
I'm using the latest Entity Framework 5 RC (5.0.0-rc.net40).
As an Extra to Ladislav's Comment. Which is correct. you cant do it in the model. IF you wanted to use code based migrations. Ie using PM commandlet Add-Migration / Update Database, then this approach introduces a generated class into the process. Then you can have defaults . See the classes that Derive from DBMigrations. see http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigration.addcolumn%28v=vs.103%29.aspx You can specific Column builder Lamda expressions. This allows defaults.
namespace MigrationsDemo.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class SomeClassThatisATable : DbMigration
{
public override void Up()
{
AddColumn("MyTable", "MyColumn", c => c.String( defaultvalue:"Mydefault" ));
}
EF doesn't use DefaultValue
attribute at all = it is not part of the model so migrations don't see it. You can propose support of this annotation on Data UserVoice.
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