使用Entity Framework一次更新多个行

时间:2017-11-02 09:56:20

标签: c# entity-framework

我试图找出是否有办法使用Entity一次更新多行。

目前我正在使用Linq2Sql SubmitChanges,它将逐行执行更新:

c.PROPERTYONE = valueOne;
c.PROPERTYTWO = valueTwo;
...
dataContext.SubmitChanges();

就我而言,valueOne和valueTwo很可能会在每次迭代时发生变化。

我想知道是否可以存储多达1000行并立即更新它们。

我知道如何使用插入(通过获取DbContext实例,相应的表,调用Add函数然后调用SaveChanges),但我正在努力寻找更新的等价物。

提前致谢!

2 个答案:

答案 0 :(得分:6)

您应该使用以下概念来更新多行。

using (var db = new MyDbContext())
{
var myData=db.YourTableObject.Where(x=>x.Someproperty=="Something").ToList();
myData.ForEach(m => m.YouPropertye= "Set Your Value",m.SomeOther="Set Other");
db.SaveChanges()

}

答案 1 :(得分:1)

在Entity Framework中,您可以使用事务。因此,您可以将一个事务中的所有更改分组。当您提交事务时,所有更改将一起/可以一起回滚。 我偷了这里的例子https://msdn.microsoft.com/en-us/library/dn456843(v=vs.113).aspx

  using (var dbContextTransaction = context.Database.BeginTransaction()) 
                { 
                    try 
                    { 
                        context.Database.ExecuteSqlCommand( 
                            @"UPDATE Blogs SET Rating = 5" + 
                                " WHERE Name LIKE '%Entity Framework%'" 
                            ); 

                        var query = context.Posts.Where(p => p.Blog.Rating >= 5); 
                        foreach (var post in query) 
                        { 
                            post.Title += "[Cool Blog]"; 
                        } 

                        context.SaveChanges(); 

                        dbContextTransaction.Commit(); 
                    } 
                    catch (Exception) 
                    { 
                        dbContextTransaction.Rollback(); 
                    } 
                } 
相关问题