Пример #1
0
        public Table Table <_Model> () where _Model : iModel, new ()
        {
            iModel model = new _Model();

            Reflector reflector = new Reflector(model);

            return(reflector.getTable());
        }
Пример #2
0
        protected override string selectQuery()
        {
            string query = "SELECT {0} FROM [{1}]";

            List <string> cols = new List <string> ();

            foreach (Column column in Table)
            {
                cols.Add(string.Format("[{0}]", column.Name));
            }

            query = string.Format(query, string.Join(", ", cols), Table.Name);

            List <string> where = new List <string> ();
            Dictionary <string, KeyValuePair <Operators, object> > criteria = parseKeys(_criteria);

            foreach (KeyValuePair <string, KeyValuePair <Operators, object> > item in criteria)
            {
                if (Table[item.Key] != null)
                {
                    string _operator = OperatorsString [item.Value.Key];
                    object value     = item.Value.Value;

                    if (Table[item.Key] != null)
                    {
                        if (value != null && typeof(iModel).IsAssignableFrom(value.GetType()))
                        {
                            Reflector reflector = new Reflector((iModel)value);
                            Table     table     = reflector.getTable();

                            value = table.PrimaryKey.getValue((iModel)value);
                        }

                        // string key = Utils.genrateNameFromType (item.Key);
                        string key = Table[item.Key].Name;

                        if (item.Value.Value == null)
                        {
                            where.Add(string.Format("[{0}] IS NULL", key));
                        }
                        else if (item.Value.Value.GetType().Equals(typeof(int)) ||
                                 item.Value.Value.GetType().Equals(typeof(long)))
                        {
                            where.Add(string.Format("[{0}] {1} {2}", key, _operator, value));
                        }
                        else if (item.Value.Value.GetType().IsArray&&
                                 typeof(string).IsAssignableFrom(item.Value.Value.GetType()) &&
                                 item.Value.Key == Operators.In)
                        {
                            where.Add(string.Format("[{0}] {1} ({2})", key, _operator, string.Join(",", value)));
                        }
                        else if (item.Value.Key == Operators.In)
                        {
                            where.Add(string.Format("[{0}] {1} ({2})", key, _operator, value));
                        }
                        else if (item.Value.Key == Operators.Between)
                        {
                            where.Add(string.Format("[{0}] {1} {2}", key, _operator, value));
                        }
                        else if (value.GetType().Equals(typeof(Boolean)) && Table[item.Key].DbType != System.Data.DbType.String)
                        {
                            where.Add(string.Format("[{0}] {1} '{2}'", key, _operator, (bool)value ? 1 : 0));
                        }
                        else
                        {
                            where.Add(string.Format("[{0}] {1} '{2}'", key, _operator, value));
                        }
                    }
                }
            }

            if (where.Count > 0)
            {
                query += string.Format(" WHERE {0}", string.Join(" AND ", where));
            }

            if (OrderBy != null)
            {
                List <string> ordering = new List <string> ();
                foreach (KeyValuePair <string, object> item in OrderBy)
                {
                    ordering.Add(string.Format("{0} {1}", Table[item.Key].Name, item.Value));
                }

                if (ordering.Count > 0)
                {
                    query += string.Format(" ORDER BY {0}", string.Join(", ", ordering));
                }
            }

            Console.WriteLine(query);

            return(query);
        }
Пример #3
0
        public Table Table(iModel model)
        {
            Reflector reflector = new Reflector(model);

            return(reflector.getTable());
        }
Пример #4
0
        protected override string selectQuery()
        {
            string query = "SELECT {0} FROM {1}";

            List <string> cols = new List <string> ();

            foreach (Column column in Table)
            {
                cols.Add(column.Name);
            }

            query = string.Format(query, string.Join(", ", cols), Table.Name);

            List <string> where = new List <string> ();
            Dictionary <string, KeyValuePair <Operators, object> > criteria = parseKeys(_criteria);

            foreach (KeyValuePair <string, KeyValuePair <Operators, object> > item in criteria)
            {
                if (Table[item.Key] != null)
                {
                    string _operator = OperatorsString [item.Value.Key];
                    object value     = item.Value.Value;

                    if (Table[item.Key] != null)
                    {
                        if (typeof(iModel).IsAssignableFrom(value.GetType()))
                        {
                            Reflector reflector = new Reflector((iModel)value);
                            Table     table     = reflector.getTable();

                            value = table.PrimaryKey.getValue((iModel)value);
                        }

                        if (item.Value.Value.GetType().Equals(typeof(int)) ||
                            item.Value.Value.GetType().Equals(typeof(long)))
                        {
                            where.Add(string.Format("{0} {1} {2}", item.Key, _operator, value));
                        }
                        else if (item.Value.Value.GetType().IsArray&&
                                 typeof(string).IsAssignableFrom(item.Value.Value.GetType()) &&
                                 item.Value.Key == Operators.In)
                        {
                            where.Add(string.Format("{0} {1} ({2})", item.Key, _operator, string.Join(",", value)));
                        }
                        else if (item.Value.Key == Operators.In)
                        {
                            where.Add(string.Format("{0} {1} ({2})", item.Key, _operator, value));
                        }
                        else
                        {
                            where.Add(string.Format("{0} {1} '{2}'", item.Key, _operator, value));
                        }
                    }
                }
            }

            if (where.Count > 0)
            {
                query += string.Format(" WHERE {0}", string.Join(" AND ", where));
            }

            return(query);
        }