2012-07-18 13 views
12

ho una classe che assomiglia a questo:Entity Framework non includono DefaultValue annotazione di dati (EF5RC)

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

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

Durante la creazione di una migrazione per includere questa classe ottengo:

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

mi piacerebbe la linea Enabled di simile a questa:

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

Certo che posso fare da solo, b ti sto solo chiedendo se c'è un modo per far funzionare automaticamente Entity Framework.

Sto utilizzando l'ultimo RC Entity Framework 5 (5.0.0-rc.net40).

risposta

10

EF non usa l'attributo DefaultValue affatto = non fa parte del modello in modo da migrazioni non lo vedono. Puoi proporre il supporto di questa annotazione su Data UserVoice.

+0

Immagino che manualmente sia l'unico. Grazie per il collegamento UserVoice, però. Ho un paio di idee per loro. – gligoran

+2

Attualmente MS oggi ha rilasciato [EF come open source] (http://entityframework.codeplex.com/) in modo che tu possa persino provarlo tu stesso) –

+0

Nice! L'ho cercato l'altro giorno e sono giunto alla conclusione che non è aperto. Mi piace il nuovo (ish) Microsoft policy aperta. – gligoran

6

Come commento di Extra to Ladislav. Che è corretto. non puoi farlo nel modello. Se si desidera utilizzare le migrazioni basate su codice. Cioè usando il comando PM Add-Migration/Update Database, questo approccio introduce una classe generata nel processo. Quindi puoi avere i valori predefiniti. Vedi le classi che derivano da DBMigrations. vedere http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigration.addcolumn%28v=vs.103%29.aspx È possibile utilizzare espressioni Lamda specifiche del generatore di colonne. Questo consente i valori predefiniti.

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