2012-07-18 19 views
12

tengo una clase que tiene este aspecto:de Entity Framework migraciones no incluyen la anotación de los datos ValorPredeterminado (EF5RC)

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

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

Al crear una migración de incluir esta clase me sale:

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

me gustaría que la línea Enabled a tener este aspecto:

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

Por supuesto que puede hacer esto por mí mismo, b Pero solo estoy preguntando si hay una manera de hacer que Entity Framework lo haga automáticamente.

Estoy utilizando el último Entity Framework 5 RC (5.0.0-rc.net40).

Respuesta

10

EF no usa el atributo DefaultValue en absoluto = no es parte del modelo, por lo que las migraciones no lo ven. Puede proponer el soporte de esta anotación en Data UserVoice.

+0

Supongo que manualmente es el único. Gracias por el enlace UserVoice, sin embargo. Tengo un par de ideas para ellos. – gligoran

+2

En realidad, MS lanzó hoy [EF como código abierto] (http://entityframework.codeplex.com/) por lo que incluso puede intentarlo usted mismo;) –

+0

¡Agradable! Lo estuve buscando el otro día y llegué a la conclusión de que no está abierto. Me gusta la nueva (ish) política abierta de Microsoft. – gligoran

6

Como extra a los comentarios de Ladislav. Cual es correcta. no puedes hacerlo en el modelo. SI quería usar migraciones basadas en código. Es decir, al usar el comando de PM Add-Migration/Update Database, este enfoque introduce una clase generada en el proceso. Entonces puedes tener los valores predeterminados. Vea las clases que derivan de DBMigrations. vea http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigration.addcolumn%28v=vs.103%29.aspx Puede expresiones específicas del generador de columnas Colmillo. Esto permite los valores predeterminados.

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