public static Object BindEDFieldValue(this Object instance, MemberInfo mi, AbstractBindMember bm, Object dbvalue) { FkMemberInfo fk = mi as FkMemberInfo; if (fk == null) return bm.bind(instance, mi, dbvalue); Object entity = bm.GetValue(instance, instance.GetType().GetMember(fk.ToBindInfo.Name)[0]); return bm.bind(entity, fk.PkInfo, dbvalue); }
public static Object GetEDFieldValue(this Object instance, MemberInfo mi, AbstractBindMember bm) { FkMemberInfo fk = mi as FkMemberInfo; if (fk == null) return ValidDBValue(bm.GetValue(instance, mi)); Object entity = bm.GetValue(instance, instance.GetType().GetMember(fk.ToBindInfo.Name)[0]); return bm.GetValue(entity, fk.PkInfo); }
public FkMemberInfo(MemberInfo memberInfo, Type instanceFrom, AbstractBindMember bindMember) { ToBindInfo = memberInfo; InstanceType= bindMember.GetMemberType(memberInfo); if (InstanceType != null) MyInstance = Activator.CreateInstance(InstanceType, null); PkInfo = InstanceType.GetPkMemberInfo(); if (PkInfo == null) throw new Exception("Every entity must have a Primary Key!"); if (instanceFrom != InstanceType) { DBNameAttribute fieldNameAttribute = (DBNameAttribute)PkInfo.GetCustomAttribute(typeof(DBNameAttribute)); PkName = (fieldNameAttribute != null) ? fieldNameAttribute.Name : PkInfo.Name; } else PkName = memberInfo.Name; }
// Convert System.Type to SqlDbType public static SqlDbType GetSqlDbType(this MemberInfo mi, Object instance, AbstractBindMember bm) { return new SqlParameter("x", instance.GetEDFieldValue(mi, bm)).SqlDbType; }