/// <summary> /// Read implementation /// </summary> /// <param name="reader"></param> /// <param name="context"></param> /// <returns></returns> private static DBQuery sReadXml(System.Xml.XmlReader reader, XmlReaderContext context) { DBQuery q = null; DBClause c = null; while (reader.EOF == false && reader.NodeType != System.Xml.XmlNodeType.Element) { if (!reader.Read()) { break; } } if (reader.NodeType == System.Xml.XmlNodeType.Element && XmlHelper.IsElementMatch(XmlHelper.Statement, reader, context)) { while (reader.Read()) { if (reader.NodeType == System.Xml.XmlNodeType.Element) { break; } } if (!reader.EOF) { c = context.Factory.Read(reader.LocalName, reader, context); if (c is DBQuery) { q = (DBQuery)c; } else { throw XmlHelper.CreateException("The Xml stream did not begin with a valid DBQuery node, and cannot be deserialized", reader, null); } } else { throw XmlHelper.CreateException("The Xml stream did not begin with a valid DBQuery node, and cannot be deserialized", reader, null); } } if (!reader.EOF) { while (reader.Read()) { if (reader.NodeType == System.Xml.XmlNodeType.Element && reader.Name == XmlHelper.Parameters) { while (reader.Read()) { if (reader.NodeType == System.Xml.XmlNodeType.Element && XmlHelper.IsElementMatch(XmlHelper.Parameter, reader, context)) { string name = reader.GetAttribute(XmlHelper.Name); DBParam param; if (context.Parameters.TryGetParameter(name, out param)) { param.ReadXml(reader, context); } } } } } } return(q); }
/// <summary> /// Inputs the XmlReader and attempts to parse as a valid DbQuery with the /// specified element namespace and prefix /// </summary> /// <param name="reader">The reader to load the DbQuery from</param> /// <param name="ns">The namespace of the DBQuery elements</param> /// <param name="prefix">The prefix</param> /// <param name="factory">An XmlFactory that creates new DBClause instances from their known names</param> /// <returns>The parsed DbQuery</returns> public static DBQuery ReadXml(System.Xml.XmlReader reader, string ns, string prefix, XmlFactory factory) { XmlReaderContext context = new XmlReaderContext(ns, prefix, factory); return(DBQuery.sReadXml(reader, context)); }
/// <summary> /// Begins a new SELECT DISTINCT statement. Add fields and tables by using the methods on the instance returned /// </summary> /// <returns>A new DBSelectQuery to support statement chaining</returns> public static DBSelectQuery SelectDistinct() { DBSelectQuery q = DBQuery.Select(); return(q.Distinct()); }
// // readXml methods // #region public static DBQuery ReadXml(System.Xml.XmlReader reader) /// <summary> /// Inputs the XmlReader and attempts to parse as a valid DbQuery /// </summary> /// <param name="reader">The reader to load the DbQuery from</param> /// <returns>The parsed DbQuery</returns> public static DBQuery ReadXml(System.Xml.XmlReader reader) { return(DBQuery.ReadXml(reader, "http://schemas.perceiveit.co.uk/Query", "")); }
/// <summary> /// Begins a new SELECT statement with a limit of [count] items returned /// </summary> /// <param name="count">The total number of items to return</param> /// <returns>A new DBSelectQuery to support statement chaining</returns> public static DBSelectQuery SelectTopN(int count) { DBSelectQuery q = DBQuery.Select(); return(q.TopN(count)); }