是否可以使用Entity Framework更新对象,而无需先获取它们?
示例:在这里,我有一个函数,它提供了一个主键来定位对象,拉取它们,然后更新它们。我想首先消除必须拉动对象,并简单地运行UPDATE查询。无需生成SELECT查询。
public async Task<int> UpdateChecks(long? acctId, string payorname, string checkaccountnumber, string checkroutingnumber, string checkaccounttype)
{
using (var max = new Max(_max.ConnectionString))
{
var payments = await
max.payments.Where(
w =>
w.maindatabaseid == acctId && (w.paymentstatus == "PENDING" || w.paymentstatus == "HOLD")).ToListAsync();
payments.AsParallel().ForAll(payment =>
{
payment.payorname = payorname;
payment.checkaccountnumber = checkaccountnumber;
payment.checkroutingnumber = checkroutingnumber;
payment.checkaccounttype = checkaccounttype;
payment.paymentmethod = "CHECK";
payment.paymentstatus = "HOLD";
});
await max.SaveChangesAsync();
return payments.Count;
}
}
答案 0 :(得分:0)
您可以使用Attach()
命令附加您已知的实体,然后调用SaveChanges()
将调用相应的更新方法。以下是关于该主题的MSDN article的一些示例代码:
关于这个问题:
var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
context.Entry(existingBlog).State = EntityState.Unchanged;
// Do some more work...
context.SaveChanges();
}
请注意,这是一般的EF逻辑,与任何特定的数据库实现无关。