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); } } } }
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); }
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); }
public void CreateFromReaderThrowsWithNullReader() { Assert.ThrowsException <ArgumentNullException>(() => { ActionResult.CreateFromReader(null); }, "reader"); }