C# EF根据用户选择插入多个实体

C# EF根据用户选择插入多个实体,c#,entity-framework-4,C#,Entity Framework 4,我们有一个ASP.NETMVC应用程序,允许用户提供一组逻辑上与一起的筛选条件。其结果是以图形方式向用户显示有多少项符合这些标准。然后,用户可以接受这些条件,在另一个表中创建一组实体 在我看来,这是一种直观而草率的方法: // where "context" is an EF Context... foreach (var person in allMatchingPeople) { context.MailRequest.Add(new MailRequest { Pe

我们有一个ASP.NETMVC应用程序,允许用户提供一组逻辑上与一起的筛选条件。其结果是以图形方式向用户显示有多少项符合这些标准。然后,用户可以接受这些条件,在另一个表中创建一组实体

在我看来,这是一种直观而草率的方法:

// where "context" is an EF Context...
foreach (var person in allMatchingPeople) {
    context.MailRequest.Add(new MailRequest {
        Person = person
    });
}

context.SaveChanges();
我不喜欢这样,这是重复的。如果是SQL,我可以执行以下操作:

INSERT INTO MailRequest (PersonId)
SELECT Id
FROM Person
WHERE ... -- filter by criteria provided from user input

在这种情况下,使用存储过程EF不提供这种功能。

您可以这样编写它

allMatchingPeople.ForEach(p => context.MailRequest.Add(p));