A maneira correta de inserir vários registros em uma tabela usando LINQ to Entities

Como muitos de nós fizemos, configurei um loop simples para adicionar vários registros de um banco de dados. Um exemplo prototípico seria algo como isto:

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();

Quando configurei o loop pela primeira vez, no entanto, escrevi intuitivamente:

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

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

Após uma pequena leitura, várias pessoas mencionaram que, se oMétodo II é usado, apenas um registro seria adicionado à tabela. Isso parece contra-intuitivo. É a função Add () que carrega uma nova inserção e, eu acho, cria um objeto após cada chamada com os dados passados. Declarando meu objeto Productlado de fora o loop parece utilizar melhor os recursos, pois a única sobrecarga consumida em cada chamada seria a reatribuição da propriedade da instância do objeto, e não a reconstrução da própria instância do objeto.

Alguém pode esclarecer? Não consegui encontrar outro post que lida diretamente com essa questão. Se alguém estiver lá fora, aponte para ele.

questionAnswers(4)

yourAnswerToTheQuestion