Example #1
0
        public override ActionResult Execute()
        {
            using (var cn = ConnectionContext.CreateConnection())
            {
                cn.Open();

                using (var cm = cn.CreateCommand())
                {
                    cm.CommandText = SqlScript;

                    var outputPars = new Dictionary <SqlScriptParameter, IDbDataParameter>();

                    foreach (var par in Parameters)
                    {
                        var parameter = cm.CreateParameter();
                        parameter.ParameterName = par.Name;
                        parameter.DbType        = par.DbType;
                        parameter.Direction     = par.Direction;

                        switch (par.Direction)
                        {
                        case ParameterDirection.Input:
                            parameter.Value = par.Value;
                            break;

                        case ParameterDirection.Output:
                            outputPars[par] = parameter;
                            break;

                        default:
                            throw new InvalidOperationException("notsupported");
                        }

                        cm.Parameters.Add(parameter);
                    }

                    var stopwatch = new Stopwatch();
                    stopwatch.Start();

                    using (var dr = cm.ExecuteReader())
                    {
                        stopwatch.Stop();

                        var result = ActionResult.CreateFromReader(dr);

                        result.EllapsedSqlMilliseconds = stopwatch.ElapsedMilliseconds;

                        foreach (var par in outputPars)
                        {
                            par.Key.Value = par.Value.Value;
                        }

                        return(result);
                    }
                }
            }
        }
Example #2
0
        public void CanCreateFromReaderWithoutResultSets()
        {
            var dr = new TestDataReader();

            var ar = ActionResult.CreateFromReader(dr);

            Assert.IsNotNull(ar);
            Assert.IsNotNull(ar.ResultSets);
            Assert.AreEqual(0, ar.ResultSets.Count);
        }
Example #3
0
        public void CanCreateFromReaderFor1ResultSet()
        {
            var dr = new TestDataReader();
            var rs = new ResultSet();

            dr.ResultSets.Add(rs);

            rs.Schema.Columns.Add(new Column {
                Name = "cola", DbType = "int", ClrType = typeof(int)
            });
            rs.Schema.Columns.Add(new Column {
                Name = "colb", DbType = "varchar", ClrType = typeof(string)
            });

            var row1 = new ResultSetRow();

            row1["cola"] = 15;
            row1["colb"] = "test";
            rs.Rows.Add(row1);

            var row2 = new ResultSetRow();

            row2["cola"] = 19;
            row2["colb"] = "testing";
            rs.Rows.Add(row2);

            var ar = ActionResult.CreateFromReader(dr);

            Assert.IsNotNull(ar);
            Assert.IsNotNull(ar.ResultSets);
            Assert.AreEqual(1, ar.ResultSets.Count);
            Assert.IsNotNull(ar.ResultSets[0]);
            Assert.IsNotNull(ar.ResultSets[0].Schema);
            Assert.IsNotNull(ar.ResultSets[0].Schema.Columns);
            Assert.AreEqual(2, ar.ResultSets[0].Schema.Columns.Count);
            Assert.IsNotNull(ar.ResultSets[0].Rows);
            Assert.AreEqual(2, ar.ResultSets[0].Rows.Count);
        }
Example #4
0
 public void CreateFromReaderThrowsWithNullReader()
 {
     Assert.ThrowsException <ArgumentNullException>(() => { ActionResult.CreateFromReader(null); }, "reader");
 }