如何从没有foreach语句的列表中添加OrUpdate?

时间:2016-08-04 15:19:55

标签: c# entity-framework lambda ef-code-first seed

通常,我会在 Seed()方法中使用这样的东西。

List<Thing> stuff = ...;
foreach(Thing thing in stuff)
  model.Things.AddOrUpdate(thing);

现在,我注意到在评论中,他们提出了类似的建议。

context.People.AddOrUpdate(
  p => p.FullName,
  new Person { FullName = "Andrew Peters" },
  new Person { FullName = "Brice Lambson" },
  new Person { FullName = "Rowan Miller" }
);

我很好奇它是否仅适用于明确声明的个别实例,或者我是否可以将其连接到 stuff 列表?

我尝试了以下,当然没有用,然后,我意识到也许我在错误的树上吠叫开始。所以在我发出过多的吠叫之前,我谦卑地问这是否有可能。

context.Things.AddOrUpdate(_ => _, stuff);

1 个答案:

答案 0 :(得分:2)

您的示例中使用的extension methods都有params数组作为最后一个参数。这意味着如果您提供一个或多个项目,那么将创建一个包含这些项目的数组。

或者,你可以只提供一个数组,这样就可以了:

model.Things.AddOrUpdate(stuff.ToArray());

params的documentation和包含的示例可能很有用。