Linq2Sql InsertAllOnSubmit与大量行的多个InsertOnSubmit

时间:2010-02-25 10:04:45

标签: performance linq-to-sql

如果我说插入/更新/删除100,000行,那么这个数字会不断增长。以下哪项是最好的方法,或者它没有任何区别。

PeopleRepository AddPeople实现

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

PeopleRepository AddPerson实现

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

PeopleRepository Save实现

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

InsertAllOnSubmit Implementation

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 Implementation

PeopleRepository repo = new PeopleRepository();

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

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

1 个答案:

答案 0 :(得分:2)

如果您有如此大量的更改,可以考虑在单个SQL UPDATE或INSERT语句中表示更改。