Миграции Entity Framework не включают аннотацию данных DefaultValue (EF5RC)

У меня есть класс, который выглядит так:

[Table("Subscribers", Schema = "gligoran")]
public class Subscriber
{
    [Key]
    public string Email { get; set; }

    [Required]
    [DefaultValue(true)]
    public bool Enabled { get; set; }
}

При создании переноса для включения этого класса я получаю:

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");
    }
}

Я хотел бы, чтобы строка Enabled выглядела так:

Enabled = c.Boolean(nullable: false, defaultValue: true),

Конечно, я могу сделать это сам, но я просто спрашиваю, есть ли способ сделать Entity Framework делать это автоматически.

Я использую последнюю версию Entity Framework 5 RC (5.0.0-rc.net40).

Ответ 1

EF вообще не использует атрибут DefaultValue= он не является частью модели, поэтому миграции не видят его. Вы можете предложить поддержку этой аннотации на Data UserVoice.

Ответ 2

В дополнение к Ладиславу Комментарий. Что правильно. вы не можете сделать это в модели. ЕСЛИ вы хотите использовать миграции на основе кода. Т.е. с использованием базы данных добавления-миграции/обновления PM-команд PM, этот подход вводит в процесс сгенерированный класс. Тогда у вас могут быть значения по умолчанию. См. Классы, которые выводятся из DBMigrations. см. http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigration.addcolumn%28v=vs.103%29.aspx Вы можете использовать выражения Lamda построителя столбцов. Это позволяет устанавливать значения по умолчанию.

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"  ));
    }