EF 5 Model First Partial Class Custom Constructor How To?

后端 未结 5 790
清酒与你
清酒与你 2020-12-03 15:07

EF has generated for me some partial classes, each with a constructor, but it says not to touch them (example below), now if I make my own secondary partial class and I want

5条回答
  •  再見小時候
    2020-12-03 15:52

    If I well understand the question, you need this constructor when creating a new entity, that is an entity that was not persisted before.

    My case was to set a default value to all datetime, that is initalize them to "the begining of time" : 1900-01-01.

    In this case I use an entity factory

    public static T GetNewEntity () {
        T e;
        try {
            e = Activator.CreateInstance();
        } catch {
            e = default(T);
        }
        SetDefaults(e);
    
        return e;
    }
    

    Each time I need a new Entity I use

    Entity e = GetNewEntity();
    

    with SetDefaults as :

    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;
            }
        }
    }
    

    full code is here

    It could be rewrittent to consider the entity type and so on...

提交回复
热议问题