private IEnumerable <T> FindAll(Queries.ISqlQuery query)
        {
            if (this.factory == null)
            {
                throw new ArgumentNullException(
                          "Using standard FindAll(), but factory is null!");
            }
            this.queryDetails.RowCount = 0;
            using (DbDataReader rdr = this.GetDbDataReader(query)) {
                while (rdr.Read())
                {
                    T p = (T)this.factory.Create(rdr);

                    if (this.Modifiers != null)
                    {
                        foreach (var d in this.Modifiers)
                        {
                            p = d(p);
                        }
                    }

                    this.queryDetails.RowCount++;

                    yield return(p);
                }
            }
        }
예제 #2
0
 public DebugOutput(Queries.ISqlQuery query)
 {
     this.SqlQueries = (new List <Queries.ISqlQuery>()
     {
         query,
     }).ToArray();
 }
        public IEnumerable <TEntity> FindAll(
            Queries.ISqlQuery query,
            Factories.IFactory factory)
        {
            var entityList = new List <TEntity>();

            using (DbCommand cmd = this.dbConnection.CreateCommand()) {
                cmd.CommandText = query.GetQueryString();

                foreach (KeyValuePair <string, object> param in
                         query.Parameters)
                {
                    cmd.Parameters.Add(
                        new SqlParameter(param.Key, param.Value));
                }

                using (DbDataReader rdr = cmd.ExecuteReader()) {
                    while (rdr.Read())
                    {
                        TEntity p = (TEntity)factory.Create(rdr);
                        entityList.Add(p);
                    }
                }
            }

            return(entityList);
        }
        public DbDataReader GetDbDataReader(
            Queries.ISqlQuery query)
        {
            using (DbCommand cmd = this.dbConnection.CreateCommand()) {
                cmd.CommandText    = query.GetQueryString();
                cmd.CommandTimeout = 600;

                foreach (Infrastructure.Parameter param in query.Parameters)
                {
                    if (param.Value.GetType().Equals(typeof(int)))
                    {
                        Debug.WriteLine(string.Format(
                                            "Using special parameter type for {0}",
                                            param.Name));
                        SqlParameter p = new SqlParameter(
                            "@" + param.Name, System.Data.SqlDbType.Int);
                        p.Value = param.Value;
                        cmd.Parameters.Add(p);
                    }
                    else
                    {
                        Debug.WriteLine(string.Format(
                                            "Using default parameter type for {0}",
                                            param.Name));
                        cmd.Parameters.Add(
                            new SqlParameter("@" + param.Name, param.Value));
                    }
                }

                string debugString = "";
                foreach (DbParameter param in cmd.Parameters)
                {
                    debugString = string.Format(
                        "DECLARE {0} {1} = {2}",
                        param.ParameterName,
                        "INT",
                        param.Value);
                    Debug.WriteLine(debugString);
                    logger.Debug(debugString);
                }
                logger.Debug(cmd.CommandText.Replace("\n", " ").Replace("\r", ""));
                Debug.WriteLine(cmd.CommandText);

                DateTime     startTime = DateTime.Now;
                DbDataReader retval    = cmd.ExecuteReader();
                DateTime     endTime   = DateTime.Now;
                TimeSpan     elapsed   = (endTime - startTime);
                debugString = string.Format(
                    "Time elapsed on query: {0}.{1}s",
                    elapsed.Seconds, elapsed.Milliseconds);
                this.queryDetails.QueryTimeMilliseconds = elapsed.TotalMilliseconds;
                Debug.WriteLine(debugString);
                logger.Debug(debugString);

                return(retval);
            }
        }
예제 #5
0
        FindAll(Queries.ISqlQuery query, bool noParents = false)
        {
            List <Models.Area> entityList = new List <Models.Area>();

            Factories.AreaFactory areaFactory = new Factories.AreaFactory();

            using (DbDataReader rdr = this.GetDbDataReader(query)) {
                while (rdr.Read())
                {
                    Models.Area area = (Models.Area)areaFactory.Create(rdr);
                    if (!noParents)
                    {
                        this.AddParents(area, rdr);
                    }
                    yield return(area);
                }
            }
        }
 public abstract TEntity First(Queries.ISqlQuery query);
 public abstract TEntity Single(Queries.ISqlQuery query);
예제 #8
0
 public override Models.Marking Single(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.MarkingFactory()).Single());
 }
예제 #9
0
 public override IEnumerable <Models.BuildingConservation> FindAll(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.BuildingConservationFactory()));
 }
예제 #10
0
 public override IEnumerable <Models.PlanSummary> FindAll(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.PlanSummaryFactory()));
 }
 public override Models.AreaReservation Single(Queries.ISqlQuery query)
 {
     return(this.FindAll(query).Single());
 }
예제 #12
0
 public override Models.UndergroundArea First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.UndergroundAreaFactory()).First());
 }
예제 #13
0
 public override IEnumerable <Models.UndergroundArea> FindAll(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.UndergroundAreaFactory()));
 }
 public override Models.PlanBrief Single(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.PlanBriefFactory()).Single());
 }
예제 #15
0
 public override Models.Person First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query).First());
 }
예제 #16
0
 public override Models.Person Single(Queries.ISqlQuery query)
 {
     return(this.FindAll(query).Single());
 }
예제 #17
0
 public override Models.Region First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.RegionFactory()).First());
 }
 public override Models.AreaReservation First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query).First());
 }
예제 #19
0
 public override Models.PlanSummary First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.PlanSummaryFactory()).First());
 }
 public abstract IEnumerable <TEntity> FindAll(Queries.ISqlQuery query);
예제 #21
0
 public override Models.BuildingConservation First(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.BuildingConservationFactory()).First());
 }
예제 #22
0
 public override IEnumerable <Models.Marking> FindAll(Queries.ISqlQuery query)
 {
     return(this.FindAll(query,
                         new Factories.MarkingFactory()));
 }