2010-04-26 3 views
0

У меня есть 2 таблицы Таблица1 со столбцами [BId, Name, Amount] Таблица2 с столбцами [CId, BId, ExpenseType, Expense]. BId - это внешний ключ в таблице 2.Обновить 2 значения таблиц в одном запросе в LINQ

Поле Сумма в Таблице 1 всегда превышает расход в Таблице2. Мне нужно обновить значения Amount (увеличение или уменьшение) в зависимости от значения Expense, и я хочу сделать это в одном запросе в LINQ. Например, если значение расхода должно быть обновлено на 200, я бы уменьшил (отрицал) значение суммы с 200. Если расход уменьшается до 100, сумма увеличивается на 100.

Заранее благодарим за любые предложения.

ответ

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 
    } 
} 
+0

Большое спасибо, именно то, что мне нужно – fireBand

Смежные вопросы