Supportiamo gli Enum in EF4.1 CodeFirst

Sicuramente sarà capitato di doversi scontrare con questa "mancanza" in fase di configurazione del mapping del nostro modello di dominio con il modello dati fornitoci da EF4.
CodeFirst soffre ovviamente di questa problematica come annunciato dallo stesso team di sviluppo di EF http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx.
Per sopperire a questa mancanza possiamo applicare un workaround basato sull’utilizzo di una classe che fa da wrapper al nostro enum e che potrà essere interpretata, ad esempio, dall’engine di CodeFirst come un Complex Type, dopo averla dichiarata tale in fase di configurazione del Context. (vedi precedenti post sul tema).

// enum type 
public enum Sex 
 {
    Male=1, 
   Female=2 
  } 
 // wrapper class for enum support in EF4 
 public class TypeSex 
 { 
    public int Value { get; set; } 
   public TypeSex(int value) 
   { 
     Value = value; 
   } 
   public TypeSex(Sex sex) 
   { 
      Value = (int)sex; 
    }
  //perform implicit conversion 
  public static implicit operator int(TypeSex typeSex) 
   { 
     return typeSex.Value; 
    } 
  public static implicit operator TypeSex (int value) 
  { 
    return new TypeSex(value); 
   }
   public static implicit operator Sex(TypeSex typeSex ) 
  { 
    return (Sex)typeSex.Value; 
   } 
   public static implicit operator TypeSex (Sex sex) 
  { 
   return new TypeSex (sex);
   } 
 } 
}

La classe come vediamo opera delle conversioni implicite sul tipo che dobbiamo persistere.Per maggiori info. http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx.

Di seguito un banalissimo esempio d’uso delle classe TypeSex che "sostituisce", come proprietà della classe Person, l’iniziale enum Gender.

// using on class person example

public class Person

{

  public String Name { get; set; }

  public String Surname { get; set; }

  public DateTime? DateOfBirth { get; set; }

  //use wrapper classe for EF4 support

  public TypeSex Gender { get; set; }

}
Annunci

Informazioni su pythonyan

.Net Solution Developer at Be Smart
Questa voce è stata pubblicata in EF4 e contrassegnata con , . Contrassegna il permalink.

Una risposta a Supportiamo gli Enum in EF4.1 CodeFirst

  1. Elmo ha detto:

    This piece of writing is actually a good one it assists new net people, who
    are wishing for blogging.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...