コード例 #1
0
ファイル: Context.cs プロジェクト: cosmos7603/ERP
 private void DB_OnAfterExecution(object sender, SpExecutionEventArgs e)
 {
     if (e.Bag != null)
     {
         Timing timing = ((Timing)e.Bag);
         timing.Stop(e.DataSize, e.Count);
     }
 }
コード例 #2
0
        public void CommandExecutionErrorInvoke(object sender, SpExecutionEventArgs e)
        {
            SpExecutionEventHandler handler = CommandExecutionError;

            if (handler != null)
            {
                handler(sender, e);
            }
        }
コード例 #3
0
        public void AfterCommandExecutionInvoke(object sender, SpExecutionEventArgs e)
        {
            SpExecutionEventHandler handler = AfterCommandExecution;

            if (handler != null)
            {
                handler(sender, e);
            }
        }
コード例 #4
0
        /// <summary>
        /// Executes a command, returning a data reader.
        /// </summary>
        /// <param name="spName">Name of the Stored Procedure.</param>
        /// <param name="sqlParameters">The input parameters.</param>
        /// <returns>A database reader, supporting multiple result sets.</returns>
        public virtual DbDataReader ExecuteReader(string spName, params SqlParameter[] sqlParameters)
        {
            var parameters = new List <string>();

            // Prepare parameters
            foreach (var sqlParameter in sqlParameters)
            {
                var p = $"@{sqlParameter.ParameterName}{(sqlParameter.Direction == ParameterDirection.Output || sqlParameter.Direction == ParameterDirection.InputOutput ? " out" : "")}";
                parameters.Add(p);
            }

            // Open connection
            Database.Connection.Open();

            // Create command
            var cmd = Database.Connection.CreateCommand();

            // Prepare command text
            cmd.CommandText = $"{spName} {string.Join(",", parameters.ToArray())}";

            // Add parameters
            cmd.Parameters.AddRange(sqlParameters);

            SpExecutionEventArgs eBefore = new SpExecutionEventArgs(spName, GetSqlCall(cmd.CommandText, sqlParameters));

            BeforeCommandExecutionInvoke(this, eBefore);

            // Execute reader
            var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            SpExecutionEventArgs eAfter = new SpExecutionEventArgs(eBefore.Bag);

            AfterCommandExecutionInvoke(this, eAfter);

            // Example on how to read multiple datasets from the same query
            // Read Entity1 from the first resultset
            // var objectContext = ((IObjectContextAdapter)myContext).ObjectContext;
            //result.Set1 = objectContext.Translate<Entity1>(reader, "Set1", MergeOptions.AppendOnly);
            // Read Entity2 from the second resultset
            //reader.NextResult();
            //result.Set2 = objectContext.Translate<Entity2>(reader, "Set2", MergeOptions.AppendOnly);

            return(reader);
        }
コード例 #5
0
        /// <summary>
        /// Executes a Stored Procedure.
        /// </summary>
        /// <typeparam name="T">Type of the resulting objects</typeparam>
        /// <param name="spName">Name of the Stored Procedure.</param>
        /// <param name="sqlParameters">The input parameters.</param>
        /// <returns>A List of the resulting objects</returns>
        public virtual List <T> ExecuteSp <T>(string spName, params SqlParameter[] sqlParameters)
        {
            var parameters = new List <string>();

            foreach (var sqlParameter in sqlParameters)
            {
                var p = $"@{sqlParameter.ParameterName}{(sqlParameter.Direction == ParameterDirection.Output || sqlParameter.Direction == ParameterDirection.InputOutput ? " out" : "")}";
                parameters.Add(p);
            }

            var command = $"{spName} {string.Join(",", parameters.ToArray())}";

            SpExecutionEventArgs eBefore = new SpExecutionEventArgs(spName, GetSqlCall(command, sqlParameters));

            BeforeCommandExecutionInvoke(this, eBefore);

            List <T> result = Database.SqlQuery <T>(command, sqlParameters).ToList();

            SpExecutionEventArgs eAfter = new SpExecutionEventArgs(eBefore.Bag, GetListSize(result), result.Count);

            AfterCommandExecutionInvoke(this, eAfter);

            return(result);
        }
コード例 #6
0
ファイル: Context.cs プロジェクト: cosmos7603/ERP
        private void DB_OnBeforeExecution(object sender, SpExecutionEventArgs e)
        {
            Timing timing = (Timing)MiniProfiler.Current.Step(e.SpName, e.SQL);

            e.Bag = timing;
        }