使用linq实体批量更新

时间:2015-06-25 11:52:35

标签: linq updates entities bulk

我有一个像对象的列表 名单 category有属性,CategoryId,CategoryName,Categorymessage,

我必须使用此列表来更新数据库表中的记录 类别,具有相同的列CategoryId,CategoryName,CategoryMessage 对于列表中具有与数据库表中匹配的CategoryId

的项目

如何使用Entity框架扩展进行批量更新, 我看到的例子的更新值硬编码如下,(statusId = 2), 而对我来说,必须从列表中与数据库表中的categoryId匹配的项中检索值。

 context.Tasks.Update(
t => t.StatusId == 1, 
t => new Task {StatusId = 2});

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您要找的?我没有运行此代码。

 List<Category> categoryList = new List<Category> {
                        new Category { Id = 1, Message = "A", Name = "A"},
                        new Category { Id = 2, Message = "B", Name = "B"},
                        new Category { Id = 3, Message = "C", Name = "C"},
                        new Category { Id = 4, Message = "D", Name = "D"},
                };
        using (var container = new Model1Container())
        {
           IQueryable<Category> categoryQueryable = container.Categories.Where(x => categoryList.Any(t => t.Id == x.Id));
           foreach (Category item in categoryQueryable)
           {
               var categorySource = categoryList.Where(x => x.Id == item.Id).Select(m => m).FirstOrDefault();
               item.Message = categorySource.Message;
               item.Name = categorySource.Message;
           }

                container.SaveChanges();
        }