如何使用对象上下文在实体框架中使用批量插入?

Posted

技术标签:

【中文标题】如何使用对象上下文在实体框架中使用批量插入?【英文标题】:How to use Bulk Insert in Entity Framework using Object Context? 【发布时间】:2015-03-14 12:01:20 【问题描述】:

我想在 Entity Framework 6 中使用 Object Context 而不是 DbContext 来调用 Bulk Insert。我该怎么做?

我想做类似的事情

只读ObjectContext obContext

public void BulkInsert<T>(IEnumerable<T> items) where T : class, new()

    obContext.BulkInsert(items);

但我无法做到这一点。

【问题讨论】:

【参考方案1】:

使用实体框架 6,您可以使用这个漂亮的 nuget 包进行批量插入,并且可以将它与 DbContext 对象一起使用。

所以是这样的:

using (var db = new YourDbContext())

   EFBatchOperation.For(db, db.BlogPosts).InsertAll(list);

https://github.com/MikaelEliasson/EntityFramework.Utilities

希望这会有所帮助。

【讨论】:

但问题是关于 ObjectContext,不是吗? 不适用于问题中要求的 ObjectContext。【参考方案2】:

使用 EntityFrame 6,您确实可以插入一系列元素。

例如,我添加一个模型 Customer

public class Customer

  public int Id get; set;
  public string CustomerName get;set;
  public string City get;set;

如果我从模型列表(列表)之类的视图中发送客户列表,我可以保存如下数据范围:

public ActionResult AddCustomerData(List<Customer> cust)

  try
  
    using(var db = new DBContext)
    
      db.customer.AddRange(cust);
      db.SaveChanges();
    
  
  catch(exception ex)
  
  

像这样,您可以将批量/范围的数据添加到数据库中,并且在添加之前,您还可以根据需要修改数据。谢谢。

【讨论】:

以上是关于如何使用对象上下文在实体框架中使用批量插入?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架关联来自多个上下文的对象

在实体框架中批量插入后批量插入记录并获取它们的 ID

解析和插入批量数据。如何保持业绩和做好关系?

如何阻止实体框架尝试保存/插入子对象?

如何使用实体框架检索插入实体的 ID? [关闭]

如何从实体框架中存在数据模型的json中反序列化对象?