我有2个表Table1,列[BId,Name,Amount] Table2,列为[CId,BId,ExpenseType,Expense]。 BId是Table2中的外键。
Table1中的Amount字段始终高于Table2中的Expense。我需要根据Expense的值更新Amount(增加或减少)的值,我想在LINQ中的单个查询中执行此操作。例如,如果费用必须用200更新,我会减少(否定)金额值200.如果费用减少到100,那么金额增加100。
提前感谢任何建议。
答案 0 :(得分:1)
您无法使用一个查询执行更新。您甚至无法在SQL中执行此操作,更不用说在LinQ中了。你需要的是交易。 在事务中,您可以将两个表记录加载到变量中,更新它们的值并提交事务。
using (var transaction = new TransactionScope()) {
try {
record1 = (from r in myDataContext.Table1s where r.BId == myBid select r).FirstOrDefault();
record2 = (from r in myDataContext.Table2s where r.BId == myBid select r).FirstOrDefault();
// Perform your record updates here
var oldExpense = record2.Expense;
record2.Expense = newExpense;
record1.Amount += (newExpense - oldExpense);
myDataContext.SubmitChanges(); // if an exception occurs here, the transaction is aborted
transaction.Complete(); // commits the transaction
} catch (Exception ex) {
// TODO: Exception handling
}
}