将修改后的列表返回给数据库

时间:2012-06-25 16:19:05

标签: c# linq entity-framework

将从实体框架中获取的修改后的列表返回给我们的数据库的最佳方法是什么。

问题以更简单的形式:

如何将自定义列表(例如约100,000条记录的列表)返回到数据库 这些是我们以离线线程安全方式修改的实体版本。

守则:

        var query = From context.Products
                    select p;

        var listQuery = query.ToList();

编辑:似乎所有附加到实体的列表都会导致线程安全错误。 所以我们必须制作列表的克隆版本,比如List 并且在版本之后以常规耗时或简写的方式插入所有项目, 任何想法?

示例步骤:

  1. 从实体 DataContext
  2. 制作并填充我们定义类型的自定义列表数组
  3. 遍历列表(约100,000项)
  4. 编辑列表
  5. 最后将其返回数据库
  6. 如何将listQuery传递给数据库?

    遍历每个并通过Entity / Linq找到等效的实体或记录并更改项目?这可能是最好的主意,还是我们有任何速记或最佳做法? 有什么建议或想法吗?

1 个答案:

答案 0 :(得分:0)

首先,代码示例中存在轻微错误。您需要在context.Products中添加'from p'而不是'from 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();