2011-02-11 3 views
9

Sto personalizzando il mio file .tt in EF 4.0. Ora come parte della personalizzazione ho bisogno di aggiungere del codice ad una proprietà nella generazione della classe POCO, se il tipo di proprietà è Nullable<System.DateTime> o System.DateTime. Non sono in grado di trovare la sintassi corretta per il confronto.Come verificare il tipo di dati di una proprietà in un'entità in un file modello T4

Ho il seguente codice nel file .tt.

foreach (EdmProperty edmProperty in entity.Properties.Where(p => p.TypeUsage.EdmType is PrimitiveType && p.DeclaringType == entity)) 
{ 
bool isDefaultValueDefinedInModel = (edmProperty.DefaultValue != null); 
//Here I need to check whether my edmProperty is Nullable<System.DateTime> or System.DateTime, so that I can insert custom code. 
} 

Si prega di aiutare.

risposta

12
if (((PrimitiveType)edmProperty.TypeUsage.EdmType). 
     PrimitiveTypeKind == PrimitiveTypeKind.DateTime && edmProperty.Nullable) 
-1

controllo di listino:

if(edmproperty.GetType() == typeof(System.DateTime)){ } 

controllo Nullable:

if(edmproperty != null && edmproperty.GetType() == typeof(Nullable<System.DateTime>)) 
+0

Grazie mille. l'ho risolto in un modo diverso. Di seguito è riportato il codice. if (((PrimitiveType) edmProperty.TypeUsage.EdmType) .PrimitiveTypeKind == PrimitiveTypeKind.DateTime && edmProperty.Nullable) \t \t { – WPFProgrammer

+0

'edmproperty.GetType()' restituirà sempre un 'typeof (EdmProperty)', mai un ' DateTime' o a 'Nullable '. – xr280xr