コード例 #1
0
        /// <summary>
        /// Performs any special processing when the resource is reconstructed from its XML image.
        /// </summary>
        /// <param name="node">An XML node containing the resource's XML image.</param>
        protected void OnFromXml(System.Xml.XmlNode node)
        {
            XmlNamespaceManager namespaces = new XmlNamespaceManager(node.OwnerDocument.NameTable);

            namespaces.AddNamespace("q", Constants.StructuredQueryNamespace);
            XmlNode queryNode = node.SelectSingleNode("q:Query", namespaces);

            StructuredQueryHelper.FromXml(queryNode);
        }
コード例 #2
0
        private void RunTest(string testName, Action <StructuredQuery> additionalProcessing = null, int derivedTypesTempTableThreshold = -1)
        {
            XmlDocument doc = GetTestCaseXml( );

            XmlNode test = doc.DocumentElement.SelectSingleNode("Test[@name='" + testName + "']");

            if (test == null)
            {
                throw new Exception("Test not found in Query tests.xml: " + testName);
            }

            // Load test
            StructuredQuery query;

            try
            {
                query = StructuredQueryHelper.FromXml(test.FirstChild);
            }
            catch (Exception ex)
            {
                throw new Exception("Failed to load query for " + testName, ex);
            }

            query.TimeZoneName = TimeZoneHelper.SydneyTimeZoneName;

            if (additionalProcessing != null)
            {
                additionalProcessing(query);
            }

            // Generate SQL
            var settings = new QuerySettings {
                Hint = "test", DebugMode = true, DerivedTypesTempTableThreshold = derivedTypesTempTableThreshold
            };
            QueryBuild result = QueryBuilder.GetSql(query, settings);
            string     sql    = result.Sql;

            sql = Canonical(sql);

            // Get expected results
            XmlNode selectSingleNode = test.SelectSingleNode("Expect/text()");

            if (selectSingleNode != null)
            {
                string expected = Canonical(selectSingleNode.Value);
                expected = expected.Replace("{userResource}", new EntityRef("core", "userResource").Id.ToString(CultureInfo.InvariantCulture));
                Assert.AreEqual(expected, sql, "Generated SQL did not match expected.");
            }

            StructuredQueryHelper.ToXml(query);
        }