2012-06-25 30 views
0

什么是返回从实体框架抓取到数据库的修改列表的最佳方式。将修改后的列表返回到数据库

问题在一个简单的形式:

如何返回约100,000记录的自定义列表e.g清单数据库 这些都是我们的实体在离线线程安全的方式修改后的版本。

验证码:

 var query = From context.Products 
        select p; 

     var listQuery = query.ToList(); 

编辑:似乎所有的连接列表来实体会导致线程安全的错误。 所以我们必须制作一份列表的复制版本,比如列表 ,并且在版本中以常规的时间或者速记的方式插入所有的项目, 任何想法?

示例步骤:

  1. Make和从实体的DataContext
  2. 迭代通过列表填补我们定义类型的自定义列表阵列(约100,000项)
  3. 编辑清单
  4. 终于将其还给数据库

如何将listQuery传递给数据库?

遍历其中的每一个,并通过实体/ Linq找到等效的实体或记录,并更改项目?它可能是最好的主意,还是我们有这样的简写或最佳实践? 任何建议或想法?

回答

0

首先,代码示例中存在一个小错误。你需要“从对在context.Products”添加,而不是“从context.Products”


如果我理解正确,我通常编辑记录列表的方法是:

  var products = dbContext.Products.ToList(); // Gets As List 
      foreach (var product in products) 
      { 
       // edit the value, EF manages what is changed 
       product.someField = "some new value"; 
      } 
      dbContext.SaveChanges(); // Saves All Changes 

我更喜欢使用方法语法。如果你喜欢使用的查询语法,你可以替换的第一行:

var products = (from p in products 
       select p).ToList(); 
+0

EF不是线程安全的,而你做的产品列表,并没有改变实体直接你的意思是再次在DataContext将采取效果? – Sypress

+0

经过测试,仍存在问题,我们应该从Entity Framework中将其编辑并将其返回到数据库原因,正如我在要以线程安全的方式提出的问题中所说的那样,因此该列表应该是自定义类型的正常列表。感谢参与 – Sypress

相关问题