I recently face the problem of setting default value for entities when using entity framework.
After some walk around, here is a part of my actual solution.
This is not really the default values of the properties, but the default values of the types of the properties.
Please consider the following class:
using System;
using System.Linq;
using System.Reflection;
namespace AppXYZ.Entities {
public static class EntityTools {
public static readonly DateTime dtDef = new DateTime(1900, 1, 1, 0, 0, 0);
public static void SetDefaults (object o) {
Type T = o.GetType();
foreach ( MemberInfo m in T.GetProperties() ) {
PropertyInfo P = T.GetProperty(m.Name);
switch ( Type.GetTypeCode(P.PropertyType) ) {
case TypeCode.String :
if ( P.GetValue(o, null) == null )
P.SetValue(o, String.Empty, null);
break;
case TypeCode.DateTime :
if ( (DateTime)P.GetValue(o, null) == DateTime.MinValue )
P.SetValue(o, EntityTools.dtDef, null);
break;
}
}
}
//T must have a constructor with 0 argument
public static T GetNewEntity<T> () {
T e;
try {
e = Activator.CreateInstance<T>();
} catch {
e = default(T);
}
SetDefaults(e);
return e;
}
}
}
Since, I discover at least another way: the just on time way
Aucun commentaire:
Enregistrer un commentaire