En Entity Framework, la inserción de datos es una de las operaciones CRUD básicas y más habituales que haremos en en una aplicación.
Insertar datos implica agregar nuevas entidades a la base de datos. Para ello, en Entity Framework tenemos principalmente dos métodos Add
y AddRange
.
Al usar insertar una entidad en el DbContext
, esta se añadirá con el estado Added
, pero aún no se realizarán acciones en la base de datos.
Cuando quieras realizar los datos en la base de datos ejecutamos SaveChanges
. Entonces se generará la sentencia SQL correspondiente (INSERT
) y se persista en la base de datos.
Inserción simple con Add
El método Add
es la forma más básica de insertar una entidad en la base de datos. Este método agrega una única entidad al contexto de EF,
dbContext.Entidad.Add(entidad);
Donde:
- dbContext: Es la instancia de la clase
DbContext
que representa la sesión con la base de datos. - Entidad: Es el nombre del
DbSet
que representa la tabla en la base de datos. - entidad: Es el objeto que deseas insertar.
Supongamos que tenemos una entidad Producto
que representa una tabla en la base de datos:
public class Producto
{
public int Id { get; set; }
public string Nombre { get; set; }
public decimal Precio { get; set; }
}
Para insertar un nuevo producto, haríamos lo siguiente:
using (var context = new MiDbContext())
{
var nuevoProducto = new Producto
{
Nombre = "Laptop",
Precio = 1200.00m
};
context.Productos.Add(nuevoProducto); // Agregamos el producto al contexto
context.SaveChanges(); // Persistimos los cambios en la base de datos
}
En este ejemplo:
- Creamos una instancia de
Producto
con los datos deseados. - Usamos
Add
para agregar el producto al contexto. - Llamamos a
SaveChanges
para ejecutar la inserción en la base de datos.
Inserción múltiple con AddRange
El método AddRange
es una extensión de Add
que permite insertar múltiples entidades en una sola operación.
Esto es útil cuando necesitas agregar una gran cantidad de registros, ya que reduce el número de llamadas a la base de datos y mejora el rendimiento.
dbContext.Entidad.AddRange(entidades);
Donde:
entidades
: Es una colección de objetos que deseas insertar.
Siguiendo con el ejemplo de Producto
, supongamos que queremos insertar varios productos a la vez:
using (var context = new MiDbContext())
{
var productos = new List<Producto>
{
new Producto { Nombre = "Teclado", Precio = 50.00m },
new Producto { Nombre = "Mouse", Precio = 25.00m },
new Producto { Nombre = "Monitor", Precio = 300.00m }
};
context.Productos.AddRange(productos); // Agregamos la lista de productos
context.SaveChanges(); // Persistimos los cambios en la base de datos
}
En este ejemplo:
- Creamos una lista de productos.
- Usamos
AddRange
para agregar todos los productos al contexto. - Llamamos a
SaveChanges
para ejecutar las inserciones en la base de datos.
Al insertar múltiples registros en una sola operación, se reduce el número de consultas a la base de datos.
Pero no es una operación bulk. Es decir, sigue siendo relativamente lenta