Hola a todos estoy tratando de insertar algunos de los valores a la base de datos el uso de mvc en asp.net. He oído que sería un buen uso de los objetos cuando la inserción de datos. Así que ¿Cómo puedo conseguir esto utilizando una Lista de objetos a través de propiedades diseñado en una clase.

Tener una clase llamada,

public class Customer
    {
        public string Name { get; set; }
        public string Company { get; set; }
        public int Telephone { get; set; }
        public string Email { get; set; }
        public int Id { get; set; }
    }

Así que tengo una otra clase que simplemente hacer los comandos sql

DBAccess.cs

public List<Customer> AddCustomers(string spName)
        {
            List<Customer> customers = new List<Customer>();

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = spName;
        }

Sé que el uso de Idata Lector uso puede obtener los valores en una base de datos como esta

IDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                Customer cus = new Customer();

                cus.Name = reader["cus_name"].ToString();
                cus.Id = Convert.ToInt32(reader["cid"]);

                customers.Add(cus);
            }

¿Cómo puedo insertar datos en la base de datos utilizando este tipo de escenario? Ayuda sería apreciada.

  • Es update o insert? DataTable se pueden guardar en la base de datos fácilmente usando SqlBulkCopy
  • Insertar datos en la base de datos 🙂
  • ver este stackoverflow.com/a/12939934/4873601
  • usted puede escribir una StoredProcedure para insertar
  • Quería saber que si podemos conseguirlo mediante una Lista de objetos Como List<Customer>
  • Yo normalmente lo hacía así. Quería probar un nuevo método.
  • por lo que u quería pasar la Lista de<Cliente> para el método y desea que el método para crear el comando insertar dinámicamente??
  • sí que parece derecho.
  • stackoverflow.com/questions/10405373/…
  • Usted debe utilizar Parámetros con valores de Tabla ( TVP ). Por favor, ver mi respuesta a la Pasar Dictionary<string,int> a Procedimiento Almacenado T-SQL para ver un ejemplo.

InformationsquelleAutor Ashane Alvis | 2016-07-29

1 Comentario

  1. 3

    En la base tienes que hacer un insert de SQL comando para insertar en la bd. Así, puede intentar el siguiente. Este método obtendrá la lista y el nombre de la tabla como un parámetro. Dentro del bucle reflexión se utiliza para insertar los valores en el valor de la clave par de la lista.

    public static bool Insert(List<YourModel> datas, string table)
    {
        bool result = false;
        List<KeyValuePair<string, string>> values = new List<KeyValuePair<string, string>>();
    
        SqlConnection con = new SqlConnection("your connection string");
        con.Open();
    
        try
        {
            foreach (var data in datas)
            {
    
                values.Clear();
                foreach (var item in data.GetType().GetProperties())
                {          
                     values.Add(new KeyValuePair<string, string>(item.Name, item.GetValue(data).ToString()));
                }
    
                string xQry = getInsertCommand(table, values);
                SqlCommand cmdi = new SqlCommand(xQry, con);
                cmdi.ExecuteNonQuery();
            }
            result = true;
        }
        catch(Exception ex)
        { throw ex; }
        finally { con.Close(); }
        return result;
    }

    En el siguiente método, el valor de la clave par la lista se pasa a otra función para hacer que el comando insertar.

    private static string getInsertCommand(string table, List<KeyValuePair<string, string>> values)
    {
        string query = null;
        query += "INSERT INTO " + table + " ( ";
        foreach (var item in values)
        {
            query += item.Key;
            query += ", ";
        }
        query = query.Remove(query.Length - 2, 2);
        query += ") VALUES ( ";
        foreach (var item in values)
        {
            if (item.Key.GetType().Name == "System.Int") //or any other numerics
            {
                query += item.Value;
            }
            else
            {
                query += "'";
                query += item.Value;
                query += "'";
            }
            query += ", ";
        }
        query = query.Remove(query.Length - 2, 2);
        query += ")";
        return query;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here