Ejemplo n.º 1
0
 private void ExtractResultsIntoList(IList <T> list, ObjectDeserialiserQuerySink querySink)
 {
     if (querySink.IncomingResults != null)
     {
         foreach (T t in querySink.IncomingResults)
         {
             list.Add(t);
         }
     }
 }
Ejemplo n.º 2
0
        public IEnumerator <T> ExecuteQuery()
        {
            using (var loggingScope = new LoggingScope("SparqlCommand<T>.ExecuteQuery()"))
            {
                #region Tracing
#line hidden
                if (Logger.IsDebugEnabled)
                {
                    Logger.Debug("{0}.", CommandText);
                }
#line default
                #endregion
                MethodCallExpression e       = null;
                IList <T>            results = new List <T>();
                switch (Connection.Store.QueryMethod)
                {
                case LinqQueryMethod.CustomSparql:
                case LinqQueryMethod.GenericSparql:
                case LinqQueryMethod.InMemorySparql:
                case LinqQueryMethod.NativeSparql:
                case LinqQueryMethod.RemoteSparql:
                    //Set up the Connection and the Results Sink
                    LinqToSparqlConnection <T> connection = (LinqToSparqlConnection <T>)Connection;
                    if (connection.SparqlQuery.Expressions.ContainsKey("Select"))
                    {
                        e = connection.SparqlQuery.Expressions["Select"];
                    }
                    ObjectDeserialiserQuerySink sink = new ObjectDeserialiserQuerySink(connection.SparqlQuery.OriginalType, typeof(T), InstanceName, ElideDuplicates, e, (RdfDataContext)connection.SparqlQuery.DataContext);

                    //Compile and Parse the Query
                    DateTime    beforeQueryCompilation = DateTime.Now;
                    SparqlQuery query = this._parser.ParseFromString(CommandText);
                    DateTime    afterQueryCompilation = DateTime.Now;
                    DateTime    beforeQueryRun        = DateTime.Now;

                    //Run the Query
                    connection.Store.QueryProcessor.Run(query, sink);

                    //Extract and Register Results
                    DateTime afterQueryRun = DateTime.Now;
                    ExtractResultsIntoList(results, sink);
                    RegisterResults(connection.SparqlQuery, results);

                    break;

                default:
                    break;
                }
                return(results.GetEnumerator());
            }
        }