2010-02-25 30 views
1

如果我说例如100,000行插入/更新/删除,这个数字将不断增长。以下哪一种是最好的方法,或者它没有任何区别。Linq2Sql InsertAllOnSubmit Vs多个InsertOnSubmit对于大量的行

的PeopleRepository AddPeople实施

public void AddPeople(IEnumerable i) 
{ 
    _Database.people.InsertAllOnSubmit(i); 
} 

的PeopleRepository addPerson的实施

public void AddPerson(Person p) 
{ 
    _Database.people.InsertOnSubmit(p); 
} 

的PeopleRepository保存实施

public void Save() 
{ 
    _Database.SubmitChanges(); 
} 

InsertAllOnSubmit实施

PeopleRepository repo = new PeopleRepository(); 

List<Person> everyone = new List<Person>(); 

foreach (var p in myObject.GetPeople()) 
{ 
    Person person = new Person 
    { 
     person.Name = p.Name 
    }; 

    everyone.Add(person); 
} 

repo.AddPeople(everyone); 
repo.Save(); 

InsertOnSubmit实施

PeopleRepository repo = new PeopleRepository(); 

foreach (var p in myObject.GetPeople()) 
{ 
    Person person = new Person 
    { 
     person.Name = p.Name 
    }; 

    repo.AddPerson(person); 
    repo.Save(); 
} 

回答

2

如果你有这样大量的变化,你可能会考虑在表达一个SQL UPDATE或INSERT语句的变化。

+2

+1因为如果你用LINQ to SQL来做这件事,它会为你做的每一个插入操作执行一个单独的查询,无论你如何编写代码将花费比执行一些普通SQL语句更长的时间。 – 2010-02-25 10:13:35