2011-04-21 3 views
0

Afin de représenter énumérations dans le edmx J'utilise emballage:objet basé sur un modèle comme POCO

C'est le Enum:

public enum CompanyType 
    { 
     SMALL_BUSINESS, 
     REGISTERED_BUSINESS, 
     PROPRIETARY_LIMITED_COMPANY 
    } 

C'est l'emballage:

public class CompanyTypeWrapper 
{ 
    public CompanyType CompanyTypeEnum { get; set; } 

    public string CompanyTypeName 
    { 
     get 
     { 
      return Enum.GetName(typeof(CompanyType), CompanyTypeEnum); 
     } 
     set 
     { 
      if (Enum.IsDefined(typeof(CompanyType), value)) 
      { 
       CompanyTypeEnum = (CompanyType)Enum.Parse(typeof(CompanyType), value); 
      } 
     } 
    } 

    public static implicit operator CompanyTypeWrapper(CompanyType t) 
    { 
     return new CompanyTypeWrapper() { CompanyTypeEnum = t }; 
    } 

    public static implicit operator CompanyType(CompanyTypeWrapper tw) 
    { 
     if (tw == null) return CompanyType.SMALL_BUSINESS; 
     else return tw.CompanyTypeEnum; 
    } 
} 

propriété CompanyTypeName a le code de l'énumération qui provient de la base de données. CompanyTypeWrapper est l'objet POCO utilisé pour contenir la valeur enum de la base de données. Parce que j'ai beaucoup d'énumération - puis-je utiliser EnumWrapper avec un modèle? alors que dans l'edmx l'utilisation de l'objet POCO pour contenir la valeur enum sera template? si oui - comment dois-je appeler le nom de l'entité? CompanyType sera représenté par EnumWrapper - est-ce possible?

Répondre

0

Je pense que cette question figurait déjà sur Stack Overflow et la réponse était non. EDMX ne prend pas en charge les modèles.

+0

Vous droite - est la solution ici: http://stackoverflow.com/questions/5300776/ef-4-0-generics-based-inheritance/5303314#5303314 – Naor

Questions connexes