【发布时间】:2014-04-24 17:01:50
【问题描述】:
正如我们许多人所做的那样,我设置了一个简单的循环来添加数据库中的多条记录。一个典型的例子是这样的:
方法一:
// 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();
然而,当我第一次设置循环时,我直观地写道:
方法二:
Product newProduct = new Product();
foreach (int price in prices)
{
newProduct.Price = price;
NWEntities.Products.Add(newProduct);
}
看了一小会后,有几个人提到如果使用方法二,只会在表中添加一条记录。这似乎违反直觉。加载新插入的是 Add() 函数,并且我认为,在每次调用后使用传入的数据创建一个对象。在循环中声明我的 Product 对象 outside 似乎可以更好地利用资源,因为每次调用所消耗的唯一开销是对象实例属性的重新分配,而不是对象实例本身的重新构造。
谁能解释一下?我找不到另一个直接处理这个问题的帖子。如果有,请指出来。
【问题讨论】:
标签: c# entity-framework ado.net linq-to-entities