Правильный способ вставки нескольких записей в таблицу с использованием LINQ to Entities
Как и многие из нас, я создал простой цикл для добавления нескольких записей из базы данных. Пример прототипа будет что-то вроде этого:
Способ 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();
Когда я впервые настроил цикл, я интуитивно написал:
Способ II:Product newProduct = new Product();
foreach (int price in prices)
{
newProduct.Price = price;
NWEntities.Products.Add(newProduct);
}
После небольшого чтения несколько человек упомянули, что еслиСпособ II используется только одна запись будет добавлена в таблицу. Это кажется нелогичным. Это функция Add (), которая загружает новую вставку и, я думаю, создает объект после каждого вызова с переданными данными. Объявление моего объекта Productвне цикл, по-видимому, лучше использует ресурсы, поскольку единственными издержками, потребляемыми при каждом вызове, будет повторное назначение свойства экземпляра объекта, а не восстановление самого экземпляра объекта.
Кто-нибудь может уточнить, пожалуйста? Я не смог найти другой пост, который непосредственно занимается этим вопросом. Если кто-то там, пожалуйста, укажите на это.