Linq更新数据库视图中的值
本文关键字:视图 更新 数据库 Linq | 更新日期: 2023-09-27 18:04:41
我是一名硒自动化测试人员。我尝试在可视化2013中添加表到数据模型,因为表有层次结构,它抛出了错误。所以,我找到了一个使用视图的方法。现在我需要使用sql更新视图中的值。我用
var acct = context.Regression_TestAccounts.Where(f => f.Account_ID.Equals(acctId))
.FirstOrDefault();
acct.AvailableDailyCreditLimit_Amt = acct.ApprovedDailyCreditLimit_Amt;
acct.AvailableTotalCreditLimit_Amt = acct.ApprovedTotalCreditLimit_Amt;
这不会对值进行任何更改。有人能帮我一下吗?
好吧,有很多代码是您遗漏的。这不是Selenium的问题。这是一个"我不知道实体框架"的问题。首先,您必须调用SaveChanges()来持久化对象中的任何更新。此外,建议使用Transactions,以便您可以在更新期间恢复任何可能的问题。此外,这里还有一篇关于如何添加/附加实体状态的文章。这样你就可以更新对象了。
public void Update(int acctId)
{
using(var context = new Context())
{
using(var dbContextTransaction = new context.Database.BeginTransaction())
{
try
{
//improved query
var acct = context.Regression_TestAccounts
.FirstOrDefault(f => f.Account_ID == acctId);
if(acct == null) //don't just return, tell the user there was no update
return;
acct.AvailableDailyCreditLimit_Amt = acct.ApprovedDailyCreditLimit_Amt;
acct.AvailableTotalCreditLimit_Amt = acct.ApprovedTotalCreditLimit_Amt;
context.Entry(acct).State = acct.Account_ID == 0
? EntityState.Added
: EntityState.Modified;
context.SaveChanges();
dbContextTransaction.Commit();
}
catch (Exception ex)
{
dbContextTransaction.Rollback();
throw;
}
}
}
}