Ejemplo n.º 1
0
        /// <summary>
        /// Load results returned from stored procedure.
        /// </summary>
        public static void LoadResults(this IDbCommandBinding binding, IDbDataAccess db, DbDataReader reader, object instance)
        {
            var recordsetCount = binding.RecordsetCount;

            if (recordsetCount == 0)
            {
                reader.Read();
                binding.GetOutputFields(db, reader, instance);
            }
            else
            {
                for (var index = 0; index < recordsetCount; index++)
                {
                    if (index > 0 && !reader.NextResult())
                    {
                        throw new ArgumentException($"Unable to load recordset index {index}");
                    }

                    var rsBinding = binding.Recordsets?.FirstOrDefault(b => b.Attributes.Index == index);
                    if (rsBinding != null)
                    {
                        rsBinding.LoadResults(db, reader, instance);
                    }
                    else
                    {
                        var rBinding = binding.Records?.FirstOrDefault(b => b.Attributes.Index == index);
                        if (rBinding != null)
                        {
                            rBinding.LoadResults(db, reader, instance);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get output fields.
        /// </summary>
        public static void GetOutputFields(this IDbCommandBinding binding, IDbDataAccess db, DbDataReader reader, object instance)
        {
            DbHelper.SetDbRef(instance, db);

            if (reader.HasRows)
            {
                binding.Fields?.ForEach(b => b.GetOutputField(reader, instance));
            }
        }
Ejemplo n.º 3
0
 protected abstract void LoadResults <T>(IDbCommandBinding binding, DbDataReader reader, T template);
Ejemplo n.º 4
0
 /// <summary>
 /// Assigns all output parameters on the template instance.
 /// </summary>
 public static void GetOutputParameters(this IDbCommandBinding binding, DbCommand cmd, object instance)
 {
     binding.Parameters?.ForEach(b => b.GetOutputParameters(cmd, instance));
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Assigns all input parameters on the command.
 /// </summary>
 public static string SetInputParameters(this IDbCommandBinding binding, string query, object instance)
 {
     binding.Parameters?.ForEach(b => b.SetInputParameters(ref query, instance));
     return(query);
 }