如何在没有 foreach 语句的情况下从列表中添加或更新?
How to AddOrUpdate from a list without foreach statement?
通常,我会在 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);
您的示例中使用的两个 extension methods 都有一个 params
数组作为最后一个参数。这意味着如果您提供多个项目中的一个,那么将创建一个包含这些项目的数组。
或者,您可以只提供一个数组,这样就可以了:
model.Things.AddOrUpdate(stuff.ToArray());
参数的 documentation 和包含的示例可能会有用。
通常,我会在 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);
您的示例中使用的两个 extension methods 都有一个 params
数组作为最后一个参数。这意味着如果您提供多个项目中的一个,那么将创建一个包含这些项目的数组。
或者,您可以只提供一个数组,这样就可以了:
model.Things.AddOrUpdate(stuff.ToArray());
参数的 documentation 和包含的示例可能会有用。