Esempio n. 1
0
        public static KindOfField ConvertFromDTO(KindOfFieldDTO kd)
        {
            KindOfField k = new KindOfField();

            k.KindOfFieldId = kd.KindOfFieldId;
            k.Name          = kd.Name;
            return(k);
        }
Esempio n. 2
0
        public static KindOfFieldDTO ConvertToDTO(KindOfField k)
        {
            KindOfFieldDTO kd = new KindOfFieldDTO();

            kd.KindOfFieldId = k.KindOfFieldId;
            kd.Name          = k.Name;
            return(kd);
        }
Esempio n. 3
0
        public static List <KindOfField> ConvertToListFromDTO(List <KindOfFieldDTO> lkd)
        {
            List <KindOfField> lk = new List <KindOfField>();

            for (int i = 0; i < lkd.LongCount(); i++)
            {
                KindOfField k = new KindOfField();
                k.KindOfFieldId = lkd[i].KindOfFieldId;
                k.Name          = lkd[i].Name;
                lk.Add(k);
            }
            return(lk);
        }
Esempio n. 4
0
        public virtual string GenerateMListFieldName(PropertyRoute route, KindOfField kindOfField)
        {
            Type type = Lite.Extract(route.Type) ?? route.Type;

            switch (kindOfField)
            {
            case KindOfField.Value:
            case KindOfField.Embedded:
                return(type.Name.FirstUpper());

            case KindOfField.Enum:
            case KindOfField.Reference:
                return((EnumEntity.Extract(type)?.Name ?? Reflector.CleanTypeName(type)) + "ID");

            default:
                throw new InvalidOperationException("No field name for type {0} defined".FormatWith(type));
            }
        }
Esempio n. 5
0
        public virtual string GenerateFieldName(PropertyRoute route, KindOfField kindOfField)
        {
            string name = route.PropertyInfo != null ? (route.PropertyInfo.Name.TryAfterLast('.') ?? route.PropertyInfo.Name)
                : route.FieldInfo.Name.FirstUpper();

            switch (kindOfField)
            {
            case KindOfField.PrimaryKey:
            case KindOfField.Ticks:
            case KindOfField.Value:
            case KindOfField.Embedded:
            case KindOfField.MList:      //se usa solo para el nombre de la tabla
                return(name);

            case KindOfField.Reference:
            case KindOfField.Enum:
                return(name + "ID");

            default:
                throw new InvalidOperationException("No name for {0} defined".FormatWith(route.FieldInfo.Name));
            }
        }
Esempio n. 6
0
        protected virtual Field GenerateField(ITable table, PropertyRoute route, NameSequence preName, bool forceNull, bool inMList)
        {
            KindOfField kof = GetKindOfField(route).ThrowIfNull(() => "Field {0} of type {1} has no database representation".FormatWith(route, route.Type.Name));

            if (kof == KindOfField.MList && inMList)
            {
                throw new InvalidOperationException("Field {0} of type {1} can not be nested in another MList".FormatWith(route, route.Type.TypeName(), kof));
            }

            //field name generation
            NameSequence        name;
            ColumnNameAttribute vc = Settings.FieldAttribute <ColumnNameAttribute>(route);

            if (vc != null && vc.Name.HasText())
            {
                name = NameSequence.Void.Add(vc.Name);
            }
            else if (route.PropertyRouteType != PropertyRouteType.MListItems)
            {
                name = preName.Add(GenerateFieldName(route, kof));
            }
            else if (kof == KindOfField.Enum || kof == KindOfField.Reference)
            {
                name = preName.Add(GenerateMListFieldName(route, kof));
            }
            else
            {
                name = preName;
            }

            switch (kof)
            {
            case KindOfField.PrimaryKey:
                return(GenerateFieldPrimaryKey((Table)table, route, name));

            case KindOfField.Ticks:
                return(GenerateFieldTicks((Table)table, route, name));

            case KindOfField.Value:
                return(GenerateFieldValue(table, route, name, forceNull));

            case KindOfField.Reference:
            {
                Implementations at = Settings.GetImplementations(route);
                if (at.IsByAll)
                {
                    return(GenerateFieldImplementedByAll(route, table, name, forceNull));
                }
                else if (at.Types.Only() == route.Type.CleanType())
                {
                    return(GenerateFieldReference(table, route, name, forceNull));
                }
                else
                {
                    return(GenerateFieldImplementedBy(table, route, name, forceNull, at.Types));
                }
            }

            case KindOfField.Enum:
                return(GenerateFieldEnum(table, route, name, forceNull));

            case KindOfField.Embedded:
                return(GenerateFieldEmbedded(table, route, name, forceNull, inMList));

            case KindOfField.MList:
                return(GenerateFieldMList((Table)table, route, name));

            default:
                throw new NotSupportedException(EngineMessage.NoWayOfMappingType0Found.NiceToString().FormatWith(route.Type));
            }
        }