public Table Table <_Model> () where _Model : iModel, new () { iModel model = new _Model(); Reflector reflector = new Reflector(model); return(reflector.getTable()); }
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); }
public Table Table(iModel model) { Reflector reflector = new Reflector(model); return(reflector.getTable()); }
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); }