0

从实体框架获取的修改列表返回到我们的数据库的最佳方法是什么?

问题以更简单的形式:

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

编码 :

        var query = From context.Products
                    select p;

        var listQuery = query.ToList();

编辑:似乎所有附加到实体的列表都会导致线程安全错误。因此,我们必须制作列表的克隆版本,例如列表,然后在编辑后以常规耗时或速记的方式插入所有项目,有 什么想法吗?

示例步骤:

  1. 从实体DataContext创建并填充我们定义类型的自定义列表数组
  2. 遍历列表(大约 100,000 个项目)
  3. 编辑列表
  4. 最后返回数据库

如何将 listQuery 传递给数据库?

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

4

1 回答 1

0

首先,您的代码示例中有一个小错误。您需要添加 'from p in context.Products' 而不是 '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();
于 2012-06-25T16:27:57.710 回答