hsh*_*hen 8 .net entity-framework
DbSet.Add()将单个实体添加到DbSet.但是没有DbSet.AddRange()来添加实体列表.有没有我可以直接从EF调用的方法,允许我添加一个实体列表?如果没有,EF有什么理由不提供这样的方法吗?
Jot*_*aBe 11
在EF6都DbSet.AddRange
和DbSet.RemoveRange
可用.
实现它们的原因是为了提高性能,通过禁用DetectChanges
每个单独添加或删除实体来完成的操作.
更多细节:
注意:此方法仍然没有官方文档,因为EF仍然是RC1.
更新:EF6已经发布,.AddRange()的官方文档就在这里,但是在上面的链接中解释了它内部发生了什么.
Eranga的评论可以说是真的.我想真正关心的是如果基础表的键是标识列,如果列表中的任何实体都设置了键属性,应该怎么做:
因此,将AddRange()实现到泛型类DbSet并没有多大意义.如果你想要一些特别符合你需要的东西,你可以扩展DbSet如下
public static class EFExtension
{
public static void AddRange<TEntity>(this DbSet<TEntity> dbSet, IList<TEntity> entities) where TEntity : class
{
foreach (TEntity e in entities)
{
dbSet.Add(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)