Пример #1
0
        private void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, int nParameter,
                                FullObjectMapper mapper)
        {
            sb.Append("WHERE\n");

            foreach (IMapper mm in mapper.PropertiesMapping)
            {
                if (mm is ValueMapper && mm.DataReaderIndex == mapper.DataReaderIndex)
                {
                    var valueMapper = (ValueMapper)mm;

                    string tableAlias = mapper.PropertyType.Name;

                    //mm.Name = ID_TRACK
                    SqlQueryParameterInfo p = query.AddParameter(
                        db.DataProvider.Convert(valueMapper.ColumnName + "_W", ConvertType.NameToQueryParameter).
                        ToString(),
                        valueMapper.ColumnName);

                    sb.AppendFormat("\t{0}.{1} = ", tableAlias, db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField));

                    if (nParameter < 0)
                    {
                        sb.AppendFormat("{0} AND\n", p.ParameterName);
                    }
                    else
                    {
                        sb.AppendFormat("{{{0}}} AND\n", nParameter++);
                    }
                }
            }

            sb.Remove(sb.Length - 5, 5);
        }
Пример #2
0
        protected SqlQueryInfo CreateSelectFullByKeySqlText(DbManager db, Type type)
        {
            var sb    = new StringBuilder();
            var query = new FullSqlQueryInfo();

            sb.Append("SELECT\n");

            int index = 0;
            FullObjectMapper mainMapper = ((FullMappingSchema)db.MappingSchema).GetObjectMapper(type, ref index);

            BuildSelectSQL(mainMapper, sb, db);

            sb.Remove(sb.Length - 2, 1);

            sb.Append("FROM\n\t");

            AppendTableName(sb, db, type);

            AppendJoinTableName(sb, db, type);

            AddWherePK(db, query, sb, -1, mainMapper);

            query.QueryText = sb.ToString();

            return(query);
        }