Можно ли добавить список объектов в контекст в инфраструктуре сущности без использования foreach addObject?
спасибо за помощь
Можно ли добавить список объектов в контекст в инфраструктуре сущности без использования foreach addObject?
спасибо за помощь
Как правило, вы не можете этого сделать - вам нужно сделать это в цикле. В некоторых случаях, однако, вы можете избежать добавления каждого объекта - в частности, если у вас есть граф сущности, и вы добавляете родительский node. Например. если у вас есть объект 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();
Из EntityFramework 6 вы можете использовать DbSet.AddRange Method (IEnumerable), как этот
db.companies.AddRange(newCompanies);
Используя linq и некоторые lambdas, вы можете легко семенить это.
Примечание. Что касается текущей версии, вы можете сделать
List<Company> companies = new List<Company>();
companies.ForEach(n => context.AddToCompanies(n));
Так я и делаю с Entity Framework 4.1 или выше с помощью подхода Code First Approach
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; }
}
Да, вы можете, например
List<Employee> empList = this.context.Employee.ToList();