我试图找出是否有办法使用Entity一次更新多行。
目前我正在使用Linq2Sql SubmitChanges,它将逐行执行更新:
c.PROPERTYONE = valueOne;
c.PROPERTYTWO = valueTwo;
...
dataContext.SubmitChanges();
就我而言,valueOne和valueTwo很可能会在每次迭代时发生变化。
我想知道是否可以存储多达1000行并立即更新它们。
我知道如何使用插入(通过获取DbContext实例,相应的表,调用Add函数然后调用SaveChanges),但我正在努力寻找更新的等价物。
提前致谢!
答案 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();
}
}