不选择EF6 MySQL更新对象

时间:2016-08-08 17:53:38

标签: c# mysql .net entity-framework entity-framework-6

是否可以使用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;
        }
    }

1 个答案:

答案 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逻辑,与任何特定的数据库实现无关。