2011-02-11 9 views
9

Estoy personalizando mi archivo .tt en EF 4.0. Ahora, como parte de la personalización, necesito agregar algún código a una propiedad en la generación de clase POCO, si el tipo de propiedad es Nullable<System.DateTime> o System.DateTime. No puedo encontrar la sintaxis adecuada para comparar.Cómo verificar el tipo de datos de una propiedad en una entidad en un archivo de plantilla T4

Tengo el siguiente código en el archivo .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. 
} 

Por favor ayuda.

Respuesta

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

verificación regular:

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

selección Anulable:

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

Muchas gracias. Lo resolví de una manera diferente. A continuación está el código. if (((PrimitiveType) edmProperty.TypeUsage.EdmType) .PrimitiveTypeKind == PrimitiveTypeKind.DateTime && edmProperty.Nullable) \t \t { – WPFProgrammer

+0

'edmproperty.GetType()' siempre devolverá un 'typeof (EdmProperty)', nunca un ' DateTime' o un 'Nullable '. – xr280xr

Cuestiones relacionadas