/// <summary> /// Gets rows from the datasource based on the PK_TransactionHistory_TransactionID index. /// </summary> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <param name="_transactionId">Primary key for TransactionHistory records.</param> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">out parameter to get total records for query.</param> /// <returns>Returns an instance of the <see cref="Nettiers.AdventureWorks.Entities.TransactionHistory"/> class.</returns> /// <remarks></remarks> /// <exception cref="System.Exception">The command could not be executed.</exception> /// <exception cref="System.Data.DataException">The <paramref name="transactionManager"/> is not open.</exception> /// <exception cref="System.Data.Common.DbException">The command could not be executed.</exception> public override Nettiers.AdventureWorks.Entities.TransactionHistory GetByTransactionId(TransactionManager transactionManager, System.Int32 _transactionId, int start, int pageLength, out int count) { SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "Production.usp_adwTiers_TransactionHistory_GetByTransactionId", _useStoredProcedure); database.AddInParameter(commandWrapper, "@TransactionId", DbType.Int32, _transactionId); IDataReader reader = null; TList <TransactionHistory> tmp = new TList <TransactionHistory>(); try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "GetByTransactionId", tmp)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } //Create collection and fill Fill(reader, tmp, start, pageLength); count = -1; if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "GetByTransactionId", tmp)); } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } if (tmp.Count == 1) { return(tmp[0]); } else if (tmp.Count == 0) { return(null); } else { throw new DataException("Cannot find the unique instance of the class."); } //return rows; }
} //end getall #endregion #region GetPaged Methods /// <summary> /// Gets a page of rows from the DataSource. /// </summary> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">Number of rows in the DataSource.</param> /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param> /// <param name="orderBy">Specifies the sort criteria for the rows in the DataSource (Name ASC; BirthDay DESC, Name ASC);</param> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <remarks></remarks> /// <returns>Returns a typed collection of Nettiers.AdventureWorks.Entities.TransactionHistory objects.</returns> public override TList <TransactionHistory> GetPaged(TransactionManager transactionManager, string whereClause, string orderBy, int start, int pageLength, out int count) { SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "Production.usp_adwTiers_TransactionHistory_GetPaged", _useStoredProcedure); if (commandWrapper.CommandType == CommandType.Text && commandWrapper.CommandText != null) { commandWrapper.CommandText = commandWrapper.CommandText.Replace(SqlUtil.PAGE_INDEX, string.Concat(SqlUtil.PAGE_INDEX, Guid.NewGuid().ToString("N").Substring(0, 8))); } database.AddInParameter(commandWrapper, "@WhereClause", DbType.String, whereClause); database.AddInParameter(commandWrapper, "@OrderBy", DbType.String, orderBy); database.AddInParameter(commandWrapper, "@PageIndex", DbType.Int32, start); database.AddInParameter(commandWrapper, "@PageSize", DbType.Int32, pageLength); IDataReader reader = null; //Create Collection TList <TransactionHistory> rows = new TList <TransactionHistory>(); try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "GetPaged", rows)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } Fill(reader, rows, 0, int.MaxValue); count = rows.Count; if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "GetPaged", rows)); } catch (Exception) { throw; } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } return(rows); }
/// <summary> /// Returns rows from the DataSource that meet the parameter conditions. /// </summary> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <param name="parameters">A collection of <see cref="SqlFilterParameter"/> objects.</param> /// <param name="orderBy">Specifies the sort criteria for the rows in the DataSource (Name ASC; BirthDay DESC, Name ASC);</param> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">out. The number of rows that match this query.</param> /// <returns>Returns a typed collection of Nettiers.AdventureWorks.Entities.TransactionHistory objects.</returns> public override TList <TransactionHistory> Find(TransactionManager transactionManager, IFilterParameterCollection parameters, string orderBy, int start, int pageLength, out int count) { SqlFilterParameterCollection filter = null; if (parameters == null) { filter = new SqlFilterParameterCollection(); } else { filter = parameters.GetParameters(); } SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "Production.usp_adwTiers_TransactionHistory_Find_Dynamic", typeof(TransactionHistoryColumn), filter, orderBy, start, pageLength); SqlFilterParameter param; for (int i = 0; i < filter.Count; i++) { param = filter[i]; database.AddInParameter(commandWrapper, param.Name, param.DbType, param.GetValue()); } TList <TransactionHistory> rows = new TList <TransactionHistory>(); IDataReader reader = null; try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } Fill(reader, rows, 0, int.MaxValue); count = rows.Count; if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows)); } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } return(rows); }
} //end Delete #endregion #region Find Functions #region Parsed Find Methods /// <summary> /// Returns rows meeting the whereClause condition from the DataSource. /// </summary> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">out. The number of rows that match this query.</param> /// <remarks>Operators must be capitalized (OR, AND).</remarks> /// <returns>Returns a typed collection of Nettiers.AdventureWorks.Entities.TransactionHistory objects.</returns> public override TList <TransactionHistory> Find(TransactionManager transactionManager, string whereClause, int start, int pageLength, out int count) { count = -1; if (whereClause.IndexOf(";") > -1) { return(new TList <TransactionHistory>()); } SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "Production.usp_adwTiers_TransactionHistory_Find", _useStoredProcedure); bool searchUsingOR = false; if (whereClause.IndexOf(" OR ") > 0) // did they want to do "a=b OR c=d OR..."? { searchUsingOR = true; } database.AddInParameter(commandWrapper, "@SearchUsingOR", DbType.Boolean, searchUsingOR); database.AddInParameter(commandWrapper, "@TransactionId", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@ProductId", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@ReferenceOrderId", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@ReferenceOrderLineId", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@TransactionDate", DbType.DateTime, DBNull.Value); database.AddInParameter(commandWrapper, "@TransactionType", DbType.StringFixedLength, DBNull.Value); database.AddInParameter(commandWrapper, "@Quantity", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@ActualCost", DbType.Currency, DBNull.Value); database.AddInParameter(commandWrapper, "@ModifiedDate", DbType.DateTime, DBNull.Value); // replace all instances of 'AND' and 'OR' because we already set searchUsingOR whereClause = whereClause.Replace(" AND ", "|").Replace(" OR ", "|"); string[] clauses = whereClause.ToLower().Split('|'); // Here's what's going on below: Find a field, then to get the value we // drop the field name from the front, trim spaces, drop the '=' sign, // trim more spaces, and drop any outer single quotes. // Now handles the case when two fields start off the same way - like "Friendly='Yes' AND Friend='john'" char[] equalSign = { '=' }; char[] singleQuote = { '\'' }; foreach (string clause in clauses) { if (clause.Trim().StartsWith("transactionid ") || clause.Trim().StartsWith("transactionid=")) { database.SetParameterValue(commandWrapper, "@TransactionId", clause.Trim().Remove(0, 13).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("productid ") || clause.Trim().StartsWith("productid=")) { database.SetParameterValue(commandWrapper, "@ProductId", clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("referenceorderid ") || clause.Trim().StartsWith("referenceorderid=")) { database.SetParameterValue(commandWrapper, "@ReferenceOrderId", clause.Trim().Remove(0, 16).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("referenceorderlineid ") || clause.Trim().StartsWith("referenceorderlineid=")) { database.SetParameterValue(commandWrapper, "@ReferenceOrderLineId", clause.Trim().Remove(0, 20).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("transactiondate ") || clause.Trim().StartsWith("transactiondate=")) { database.SetParameterValue(commandWrapper, "@TransactionDate", clause.Trim().Remove(0, 15).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("transactiontype ") || clause.Trim().StartsWith("transactiontype=")) { database.SetParameterValue(commandWrapper, "@TransactionType", clause.Trim().Remove(0, 15).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("quantity ") || clause.Trim().StartsWith("quantity=")) { database.SetParameterValue(commandWrapper, "@Quantity", clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("actualcost ") || clause.Trim().StartsWith("actualcost=")) { database.SetParameterValue(commandWrapper, "@ActualCost", clause.Trim().Remove(0, 10).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("modifieddate ") || clause.Trim().StartsWith("modifieddate=")) { database.SetParameterValue(commandWrapper, "@ModifiedDate", clause.Trim().Remove(0, 12).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } throw new ArgumentException("Unable to use this part of the where clause in this version of Find: " + clause); } IDataReader reader = null; //Create Collection TList <TransactionHistory> rows = new TList <TransactionHistory>(); try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } Fill(reader, rows, start, pageLength); if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows)); } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } return(rows); }
/// <summary> /// Gets rows from the datasource based on the AK_CurrencyRate_CurrencyRateDate_FromCurrencyCode_ToCurrencyCode index. /// </summary> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <param name="_currencyRateDate">Date and time the exchange rate was obtained.</param> /// <param name="_fromCurrencyCode">Exchange rate was converted from this currency code.</param> /// <param name="_toCurrencyCode">Exchange rate was converted to this currency code.</param> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">out parameter to get total records for query.</param> /// <returns>Returns an instance of the <see cref="Nettiers.AdventureWorks.Entities.CurrencyRate"/> class.</returns> /// <remarks></remarks> /// <exception cref="System.Exception">The command could not be executed.</exception> /// <exception cref="System.Data.DataException">The <paramref name="transactionManager"/> is not open.</exception> /// <exception cref="System.Data.Common.DbException">The command could not be executed.</exception> public override Nettiers.AdventureWorks.Entities.CurrencyRate GetByCurrencyRateDateFromCurrencyCodeToCurrencyCode(TransactionManager transactionManager, System.DateTime _currencyRateDate, System.String _fromCurrencyCode, System.String _toCurrencyCode, int start, int pageLength, out int count) { SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "Sales.usp_adwTiers_CurrencyRate_GetByCurrencyRateDateFromCurrencyCodeToCurrencyCode", _useStoredProcedure); database.AddInParameter(commandWrapper, "@CurrencyRateDate", DbType.DateTime, _currencyRateDate); database.AddInParameter(commandWrapper, "@FromCurrencyCode", DbType.StringFixedLength, _fromCurrencyCode); database.AddInParameter(commandWrapper, "@ToCurrencyCode", DbType.StringFixedLength, _toCurrencyCode); IDataReader reader = null; TList <CurrencyRate> tmp = new TList <CurrencyRate>(); try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "GetByCurrencyRateDateFromCurrencyCodeToCurrencyCode", tmp)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } //Create collection and fill Fill(reader, tmp, start, pageLength); count = -1; if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "GetByCurrencyRateDateFromCurrencyCodeToCurrencyCode", tmp)); } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } if (tmp.Count == 1) { return(tmp[0]); } else if (tmp.Count == 0) { return(null); } else { throw new DataException("Cannot find the unique instance of the class."); } //return rows; }
} //end Delete #endregion #region Find Functions #region Parsed Find Methods /// <summary> /// Returns rows meeting the whereClause condition from the DataSource. /// </summary> /// <param name="transactionManager"><see cref="TransactionManager"/> object</param> /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param> /// <param name="start">Row number at which to start reading.</param> /// <param name="pageLength">Number of rows to return.</param> /// <param name="count">out. The number of rows that match this query.</param> /// <remarks>Operators must be capitalized (OR, AND).</remarks> /// <returns>Returns a typed collection of Nettiers.AdventureWorks.Entities.DatabaseLog objects.</returns> public override TList <DatabaseLog> Find(TransactionManager transactionManager, string whereClause, int start, int pageLength, out int count) { count = -1; if (whereClause.IndexOf(";") > -1) { return(new TList <DatabaseLog>()); } SqlDatabase database = new SqlDatabase(this._connectionString); DbCommand commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.usp_adwTiers_DatabaseLog_Find", _useStoredProcedure); bool searchUsingOR = false; if (whereClause.IndexOf(" OR ") > 0) // did they want to do "a=b OR c=d OR..."? { searchUsingOR = true; } database.AddInParameter(commandWrapper, "@SearchUsingOR", DbType.Boolean, searchUsingOR); database.AddInParameter(commandWrapper, "@DatabaseLogId", DbType.Int32, DBNull.Value); database.AddInParameter(commandWrapper, "@PostTime", DbType.DateTime, DBNull.Value); database.AddInParameter(commandWrapper, "@DatabaseUser", DbType.String, DBNull.Value); database.AddInParameter(commandWrapper, "@SafeNameEvent", DbType.String, DBNull.Value); database.AddInParameter(commandWrapper, "@Schema", DbType.String, DBNull.Value); database.AddInParameter(commandWrapper, "@SafeNameObject", DbType.String, DBNull.Value); database.AddInParameter(commandWrapper, "@Tsql", DbType.String, DBNull.Value); database.AddInParameter(commandWrapper, "@XmlEvent", DbType.Xml, DBNull.Value); // replace all instances of 'AND' and 'OR' because we already set searchUsingOR whereClause = whereClause.Replace(" AND ", "|").Replace(" OR ", "|"); string[] clauses = whereClause.ToLower().Split('|'); // Here's what's going on below: Find a field, then to get the value we // drop the field name from the front, trim spaces, drop the '=' sign, // trim more spaces, and drop any outer single quotes. // Now handles the case when two fields start off the same way - like "Friendly='Yes' AND Friend='john'" char[] equalSign = { '=' }; char[] singleQuote = { '\'' }; foreach (string clause in clauses) { if (clause.Trim().StartsWith("databaselogid ") || clause.Trim().StartsWith("databaselogid=")) { database.SetParameterValue(commandWrapper, "@DatabaseLogId", clause.Trim().Remove(0, 13).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("posttime ") || clause.Trim().StartsWith("posttime=")) { database.SetParameterValue(commandWrapper, "@PostTime", clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("databaseuser ") || clause.Trim().StartsWith("databaseuser="******"@DatabaseUser", clause.Trim().Remove(0, 12).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("event ") || clause.Trim().StartsWith("event=")) { database.SetParameterValue(commandWrapper, "@SafeNameEvent", clause.Trim().Remove(0, 5).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("schema ") || clause.Trim().StartsWith("schema=")) { database.SetParameterValue(commandWrapper, "@Schema", clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("object ") || clause.Trim().StartsWith("object=")) { database.SetParameterValue(commandWrapper, "@SafeNameObject", clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("tsql ") || clause.Trim().StartsWith("tsql=")) { database.SetParameterValue(commandWrapper, "@Tsql", clause.Trim().Remove(0, 4).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } if (clause.Trim().StartsWith("xmlevent ") || clause.Trim().StartsWith("xmlevent=")) { database.SetParameterValue(commandWrapper, "@XmlEvent", clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote)); continue; } throw new ArgumentException("Unable to use this part of the where clause in this version of Find: " + clause); } IDataReader reader = null; //Create Collection TList <DatabaseLog> rows = new TList <DatabaseLog>(); try { //Provider Data Requesting Command Event OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows)); if (transactionManager != null) { reader = Utility.ExecuteReader(transactionManager, commandWrapper); } else { reader = Utility.ExecuteReader(database, commandWrapper); } Fill(reader, rows, start, pageLength); if (reader.NextResult()) { if (reader.Read()) { count = reader.GetInt32(0); } } //Provider Data Requested Command Event OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows)); } finally { if (reader != null) { reader.Close(); } commandWrapper = null; } return(rows); }