0
在第一個添加方法我得到的異常: ObjectContext實例已被處置,不能再用於需要連接的操作。我得到System.ObjectDisposedException,似乎無法找到什麼是錯的
我知道我必須在使用括號(),它是和事務是公共虛擬
public void confirmPayments(List<int> Payments)
{
using (var db = new BankContext())
{
try
{
foreach (int a in Payments)
{
foreach (Payment payment in db.Payment)
{
if (a == payment.Id)
{
Transaction senderTransaction = new Transaction
{
Amount = payment.Amount,
CreationDate = payment.CreationDate,
DueDate = payment.DueDate,
Receiver = payment.Receiver,
Sender = payment.Sender,
KIDMessage = payment.KIDMessage
};
Transaction receiverTranscation = new Transaction
{
Amount = payment.Amount,
CreationDate = payment.CreationDate,
DueDate = payment.DueDate,
Receiver = payment.Receiver,
Sender = payment.Sender,
KIDMessage = payment.KIDMessage
};
Account senderAccount = findAccount(senderTransaction.Sender);
Account receiverAccount = findAccount(receiverTranscation.Receiver);
senderAccount.Transaction.Add(senderTransaction);
senderAccount.Payment.Remove(payment);
senderAccount.Balance = senderAccount.Balance - senderTransaction.Amount;
receiverAccount.Transaction.Add(receiverTranscation);
receiverAccount.Balance = receiverAccount.Balance + receiverTranscation.Amount;
}
}
}
db.SaveChanges();
}
catch (Exception error)
{
System.Diagnostics.Debug.WriteLine("FAILED TO CONFIRM PAYMENT: \n" + error.Message + "\n");
}
}
}
表/類,即時通訊試圖加入到(codefirst):
public class Account
{
[Key]
public int Id { get; set; }
public double Balance { get; set; }
public string AccountNumber { get; set; }
public string AccountType { get; set; }
public string CreationDate { get; set; }
public string ClosingDate { get; set; }
public virtual List<Transaction> Transaction { get; set; }
public virtual List<Payment> Payment { get; set; }
}
你正在調用的函數(特別是findAccount)看起來很可疑;你應該可以附加調試器並獲取它拋出的實際位置。 – BradleyDotNET
什麼是findAccount()?它是否從完全不同的數據庫上下文中獲取對象並處理該上下文? – David
@大衛謝謝!,這工作..沒想到它會因爲findAccount()使用()相同的數據庫... –