使用linq2sql
将对象保存到db时出现问题以下是代码:
static DataContext dataContext = new DataContext();
public static void ConfirmationPaymentOrder(ConfirmPayments data)
{
using (dataContext = new DataContext(DBConnection))
{
foreach (OrdersConfirm orderConfirm in data.OrdersConfirm)
{
var result = SendRequestToConfirm(orderConfirm.Orders, orderConfirm.UserName, orderConfirm.Password);
dataContext.Orders.InsertOnSubmit(orderConfirm);
dataContext.SubmitChanges();
}
}
}
错误:
Cannot access a disposed object.
Object name: 'DataContext accessed after Dispose.'.
如何解决问题?
答案 0 :(得分:2)
你不应该共享一个连接对象(静态),这会导致这种问题。静态对象应该只创建一个。在方法中移动声明。
public static void ConfirmationPaymentOrder(ConfirmPayments data)
{
using (var dataContext = new DataContext(DBConnection))
{
foreach (OrdersConfirm orderConfirm in data.OrdersConfirm)
{
var result = SendRequestToConfirm(orderConfirm.Orders, orderConfirm.UserName, orderConfirm.Password);
dataContext.Orders.InsertOnSubmit(orderConfirm);
}
dataContext.SubmitChanges();
}
}
很好地注意到循环中的SubmitChanges:C。Knight
答案 1 :(得分:1)
可能值得在foreach循环外移动dataContext.SubmitChanges()。不知道这是否会解决问题,但可能值得一试,因为似乎没有任何理由(在您的示例中)多次调用SubmitChanges()。
另外我假设您之前没有意外处理过DBConnection对象?