2010-02-25 34 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