Как и многие из нас, я создал простой цикл для добавления нескольких записей из базы данных. Прототипный пример будет примерно таким:
Метод 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 вне цикла будет лучше использовать ресурсы, поскольку только накладные расходы, потребленные в каждый вызов будет повторным назначением свойства экземпляра объекта, а не повторной конструкцией самого объекта объекта.
Кто-нибудь может прояснить? Я не мог найти другую должность, которая напрямую связана с этим вопросом. Если кто-то там, укажите на него.