Beispiel #1
0
        public virtual List <T> ExecuteReader <T>(
            string storedProcedureName,
            string columnNameOut,
            out int totalRecords)
        {
            if (string.IsNullOrEmpty(SqlConnectionString))
            {
                throw new ArgumentNullException(ErrorDbConnection);
            }

            totalRecords = 0;
            using (var connection = new SqlConnection(SqlConnectionString))
            {
                connection.Open();
                var list = new List <T>();
                using (var command = new SqlCommand())
                {
                    command.Connection  = connection;
                    command.CommandText = storedProcedureName;
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add(AddOutputParameter(columnNameOut, 50, SqlDbType.Int));
                    var reader     = command.ExecuteReader();
                    var properties = typeof(T).GetProperties();
                    while (reader.Read())
                    {
                        var local = Activator.CreateInstance <T>();
                        foreach (var info in properties)
                        {
                            try
                            {
                                var name = ReflectionExtensions.GetAttributeDisplayName(info);
                                if (name == Constants.NotMapped)
                                {
                                    continue;
                                }

                                var data = reader[name];
                                if (data.GetType() != typeof(DBNull))
                                {
                                    info.SetValue(local, data, null);
                                }
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                        }

                        list.Add(local);
                    }

                    reader.Close();

                    if (command.Parameters[columnNameOut].Value != null)
                    {
                        totalRecords = (int)command.Parameters[columnNameOut].Value;
                    }
                }

                connection.Close();
                return(list);
            }
        }
Beispiel #2
0
        public DataContexService()
        {
            var data = ConfigurationManager.ConnectionStrings[Constants.ConnectionString].ToString();

            SqlConnectionString = ReflectionExtensions.Decrypt(Constants.ConnectionString, data);
        }