Example #1
0
        /// <summary>
        /// Модульные тесты будут применять эту статическую версию
        /// </summary>
        /// <param name="target"></param>
        /// <param name="outgoingData"></param>
        public static void SerializeTheQuery(object target, Stream stream)
        {
            // получение запроса
            IQueryable query = target as IQueryable;

            if (query == null)
            {
                Error(stream, "Query visualizer invoked on non-IQueryable target.");
                return;
            }

            //получение сведений о поставщике
            Type      tQueryImpl = query.GetType();
            FieldInfo fiContext  = tQueryImpl.GetField("context", BindingFlags.NonPublic | BindingFlags.Instance);

            if (fiContext == null)
            {
                Error(stream, "Query field 'context' not found in type " + tQueryImpl.ToString() + ".");
                return;
            }

            Object objProvider = fiContext.GetValue(query);

            if (objProvider == null)
            {
                Error(stream, "Query field 'context' returned null.");
                return;
            }

            System.Data.Linq.DataContext dataContext = objProvider as System.Data.Linq.DataContext;
            if (dataContext == null)
            {
                Error(stream, "Query is not against a DataContext.");
                return;
            }

            //вызов визуализатора для сериализации сведений о запросе
            Visualizer.StreamQueryInfo(dataContext, query, stream);
        }
Example #2
0
        /// <summary>
        /// 单元测试将使用此静态版本
        /// </summary>
        /// <param name="target"></param>
        /// <param name="outgoingData"></param>
        public static void SerializeTheQuery(object target, Stream stream)
        {
            // 获取查询
            IQueryable query = target as IQueryable;

            if (query == null)
            {
                Error(stream, "Query visualizer invoked on non-IQueryable target.");
                return;
            }

            //获取提供程序
            Type      tQueryImpl = query.GetType();
            FieldInfo fiContext  = tQueryImpl.GetField("context", BindingFlags.NonPublic | BindingFlags.Instance);

            if (fiContext == null)
            {
                Error(stream, "Query field 'context' not found in type " + tQueryImpl.ToString() + ".");
                return;
            }

            Object objProvider = fiContext.GetValue(query);

            if (objProvider == null)
            {
                Error(stream, "Query field 'context' returned null.");
                return;
            }

            System.Data.Linq.DataContext dataContext = objProvider as System.Data.Linq.DataContext;
            if (dataContext == null)
            {
                Error(stream, "Query is not against a DataContext.");
                return;
            }

            //调用可视化工具以序列化查询信息
            Visualizer.StreamQueryInfo(dataContext, query, stream);
        }