добавление списка объектов в Context в ef - PullRequest
26 голосов
/ 14 декабря 2010

Можно ли добавить список объектов в Context в платформе сущностей без использования foreach addObject?

спасибо за помощь

Ответы [ 4 ]

30 голосов
/ 28 сентября 2015

Из EntityFramework 6 вы можете использовать Метод DbSet.AddRange (IEnumerable) вот так

db.companies.AddRange(newCompanies);
14 голосов
/ 14 декабря 2010

Как правило, вы не можете сделать это - вы должны сделать это в цикле.Однако в некоторых случаях вы можете избежать добавления каждого объекта, в частности, если у вас есть граф сущностей и вы добавляете родительский узел.Например, если у вас есть Company объект, который имеет коллекцию Employees:

context.AddToCompanies(company);

/* The following loop is not necessary */
/* The employees will be saved together with the company */
/*
foreach (var employee in company.Employees)
{
    context.AddToEmployees(employee);
}*/

context.SaveChanges();
9 голосов
/ 12 октября 2012

Используя linq и несколько лямбд, вы можете легко засадить это так.

Примечание. Что касается текущей версии, вы можете сделать

List<Company> companies = new List<Company>();

companies.ForEach(n => context.AddToCompanies(n));

Это то, что я делаю с Entity Framework 4.1 или выше с подходом Code First

List<RelationshipStatus> statuses = new List<RelationshipStatus>()
{
    new RelationshipStatus(){Name = "Single"},
    new RelationshipStatus(){Name = "Exclusive Relationship"},
    new RelationshipStatus(){Name = "Engaged"},
    new RelationshipStatus(){Name = "Married"},
    new RelationshipStatus(){Name = "Open Relationship"},
    new RelationshipStatus(){Name = "Commited Relationship"}
};

statuses.ForEach(n => myContext.RelationshipStatuses.Add(n));
myContext.SaveChanges();

Контекст был настроен следующим образом

public class MyContext:DbContext
{
     public DbSet<RelationshipStatus> RelationshipStatuses{ get; set; }
}
0 голосов
/ 08 января 2015

Да, вы можете, как

List<Employee> empList = this.context.Employee.ToList();
...