Devo ammetterlo, non ho resistito alla tentazione e ho subito installato sulla VM la versione CTP June 2011 di Entity Framework. La prima feature che ho provato è il supporto agli enumerativi in modalità Code First. Partiamo subito con l’esempio. Banale classe Product e relativo DbContext:
     public class Product
{        
    public string Code { get; set; }
    public string Description { get; set; }
    public DiscountType Discount { get; set; }
}
public class Db : DbContext
{
    public DbSet<Product> Products { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Product>().HasKey(p => p.Code);
    }
}
 
La classe Product espone la proprietà Discount di tipo DiscountType (Enum) cosi definito:
  public enum DiscountType
{
    Less_Than_20_percent = 0,
    Less_Than_40_Percent = 1,
    Less_Than_60_Percent = 2
}
 
Aggiungiamo del codice per creare e popolare il database:
  Database.SetInitializer<Db>(new DropCreateDatabaseAlways<Db>());
using (Db db = new Db())
{
    int productsCount = db.Products.Count();
    ////Add new product.
    Product p1 = new Product() { Code = "COD123", Description = "Shoes", Discount = DiscountType.Less_Than_20_percent };
    db.Products.Add(p1);
    Product p2 = new Product() { Code = "COD124", Description = "Jacket", Discount = DiscountType.Less_Than_40_Percent };
    db.Products.Add(p2);
    Product p3 = new Product() { Code = "COD125", Description = "Skirt", Discount = DiscountType.Less_Than_60_Percent };
    db.Products.Add(p3);
    db.SaveChanges();
}
using (Db db = new Db())
{
    Product pr = db.Products.Where(p => p.Discount == DiscountType.Less_Than_60_Percent).FirstOrDefault();
    MessageBox.Show(string.Format("{0}-{1}", pr.Code, pr.Description));
}
  Diamo uno sguardo al database creato:
  
 
Con la tabella Products così popolata:

Notevole  (Certo, se il supporto agli Enum, fosse arrivato qualche versione prima …)
 (Certo, se il supporto agli Enum, fosse arrivato qualche versione prima …)
Aggiornamento di servizio:
Piccola nota: finalmente sono riuscito a trovare qualche minuto per documentarmi. In questa versione il supporto agli Enum ha alcune limitazioni:
  - I metodi ToString() e TryParse() non possono essere utilizzati nelle query
- Come sottolineava Raffaeu (vedi commenti) non è possibile mappare un Enum a stringhe e\o altri valori arbitrari
- Non è possibile utilizzare un Enum come campo discriminatorio nella gestione delle gerarchie classi\tabelle
Da quanto si legge queste limitazioni potrebbero essere superate con i prossimi rilasci. Vedremo.