首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向DbSet添加实体列表

如何向DbSet添加实体列表
EN

Stack Overflow用户
提问于 2012-02-11 17:49:32
回答 2查看 18.6K关注 0票数 8

DbSet.Add()向DbSet添加一个实体。但是没有DbSet.AddRange()来添加实体列表。是否有可以直接从EF调用的方法,允许我添加一个实体列表?若否,EF为何不提供这样的方法呢?

EN

回答 2

Stack Overflow用户

发布于 2013-10-01 03:43:02

在EF6中,DbSet.AddRangeDbSet.RemoveRange都可用。

实现它们的原因是为了提高性能,通过对实体的每次添加或删除禁用DetectChanges所做的工作。

更多详细信息:

注意:这个方法还没有正式文档,因为EF仍然是RC1。

更新: EF6已经发布,the official documentation for .AddRange() is here也发布了,但是上面的链接说明了里面发生了什么。

票数 11
EN

Stack Overflow用户

发布于 2012-02-13 09:00:57

Eranga的评论可以说是正确的。我想真正需要考虑的是,如果列表中的任何实体都设置了key属性,那么应该做些什么,如果基础表的键是identity列:

  • 抛出异常?还是
  • 将键设置为零,以便插入具有不同键的新实体?或者
  • 用相同的键更新实体?

因此,将AddRange()实现到泛型类DbSet并不太有意义。如果您想要特定的适合您需要的东西,可以扩展DbSet,如下所示

代码语言:javascript
运行
AI代码解释
复制
   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);
        }
     }
  }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9245731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档