La forma correcta de insertar múltiples registros en una tabla usando LINQ to Entities

Como muchos de nosotros lo hemos hecho, configuré un bucle simple para agregar múltiples registros de una base de datos. Un ejemplo prototípico sería algo como esto:

Método I:
// A list of product prices
List<int> prices = new List<int> { 1, 2, 3 };

NorthwindEntities NWEntities = new NorthwindEntities();

foreach (int price in prices)
{
   Product newProduct = new Product();
   newProduct.Price = price;
   NWEntities.Products.AddObject(newProduct);
}

NWEntities.SaveChanges();

Sin embargo, cuando configuré el bucle por primera vez, escribí intuitivamente:

Método II:
Product newProduct = new Product();

foreach (int price in prices)
{
   newProduct.Price = price;
   NWEntities.Products.Add(newProduct);
}

Después de leer un poco, varias personas mencionaron que si elMétodo II se utiliza solo se agregaría un registro a la tabla. Esto parece contrario a la intuición. Es la función Add () la que carga una nueva inserción y, creo, crea un objeto después de cada llamada con los datos pasados. Declarando mi objeto Productfuera de el bucle parecería utilizar mejor los recursos, ya que la única sobrecarga consumida en cada llamada sería la reasignación de la propiedad de instancia de objeto, y no la reconstrucción de la instancia de objeto en sí.

¿Alguien puede aclarar? No pude encontrar otra publicación que aborde esta pregunta directamente. Si hay uno por ahí, apúntalo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta