DbSet.Add()向DbSet添加一个实体。但是没有DbSet.AddRange()来添加实体列表。是否有可以直接从EF调用的方法,允许我添加一个实体列表?若否,EF为何不提供这样的方法呢?
发布于 2013-10-01 03:43:02
在EF6中,DbSet.AddRange
和DbSet.RemoveRange
都可用。
实现它们的原因是为了提高性能,通过对实体的每次添加或删除禁用DetectChanges
所做的工作。
更多详细信息:
注意:这个方法还没有正式文档,因为EF仍然是RC1。
更新: EF6已经发布,the official documentation for .AddRange() is here也发布了,但是上面的链接说明了里面发生了什么。
发布于 2012-02-13 09:00:57
Eranga的评论可以说是正确的。我想真正需要考虑的是,如果列表中的任何实体都设置了key属性,那么应该做些什么,如果基础表的键是identity列:
因此,将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);
}
}
}
https://stackoverflow.com/questions/9245731
复制相似问题