Получить Datareader с помощью объектов

Я работал над извлечением данных из базы данных SQL с помощью Datareader и заполнил их в Datatable. Но мне интересно, есть ли способ обрабатывать данные из datareader без использования datatable? Я имею в виду обработку табличные значения с использованием объектов должны быть более предпочтительными..

Но я не хочу использовать здесь LINQ, так как я собираюсь использовать объект ADOMD для извлечения данных из базы данных (кубы).


person Bharathi    schedule 16.08.2012    source источник


Ответы (3)


Взгляните на dapper-dot-net. Я не уверен, как это работает с ADOMD.NET, но он аккуратно материализует результаты запроса в динамических объектах.

person Matthias Meid    schedule 16.08.2012

Просто прокрутите элементы и установите их в качестве значений свойств вашего пользовательского класса. В приведенном ниже примере считываются данные из таблицы Customer и создается объект List of Customer Class. Предполагая, что у вас есть POCO клиента с идентификатором и именем в качестве свойств

List<Customer> custList= new List<Customer>();
string connString="yourConnectionStringHere";
using (var conn = new SqlConnection(connString))
{
    conn.Open();
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT ID,NAME From Customer";           

        using (var reader = cmd.ExecuteReader())
        {
           if (reader.HasRows)
           {  
             while (reader.Read())
             {
               var cust= new Customer();

                    if (!reader.IsDBNull( reader.GetOrdinal("ID")))
                        cust.ID = reader.GetInt32(reader.GetOrdinal("ID"));

                    if (!reader.IsDBNull( reader.GetOrdinal("Name")))
                        cust.Name = reader.GetString(reader.GetOrdinal("Name"));

                    custList.Add(cust);
             }
           }
        }
    }
}
person Shyju    schedule 16.08.2012

общедоступный список GetEmployee (строка spname) {

        con.Open();
        cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = spname;
        cmd.CommandType = CommandType.StoredProcedure;
        reader = cmd.ExecuteReader();
        List<EmployeeDetails> lstemp = new List<EmployeeDetails>();
        while (reader.Read())
        {
            EmployeeDetails emp = new EmployeeDetails();
            emp.EmployeeId =Convert.ToInt32( reader["EmployeeId"].ToString());
            emp.FirstName = reader["FirstName"].ToString();
            emp.LastName = reader["LastName"].ToString();
            emp.DOB = Convert.ToDateTime(reader["DOB"].ToString());
            emp.Gender = Convert.ToInt32(reader["Gender"].ToString());
            emp.QName = reader["QName"].ToString();
            emp.Dname = reader["DName"].ToString();
            emp.Email = reader["Email"].ToString();



            lstemp.Add(emp);

        }


        return lstemp;
    }
person parthasarathi ray    schedule 29.04.2014