在我的应用程序中,我使用存储过程与实体框架。我的问题代码如下:Ninject with Entity Framework - SqlException
foreach (var order in Orders)
{
_checkoutRepository.SaveOrderItem(...);
foreach (var accessory in order.Accessories)
{
_checkoutRepository.SaveOrderItem(...);
}
foreach (var gift in order.Gifts)
{
_checkoutRepository.SaveOrderItem(...);
}
}
if (topOrder.GiftVouchers.Any())
{
_discountRepository.ReserveGiftVoucher(...);
}
正如你所看到的,首先,我保存在一个循环中的所有订单项目。这里一切都很好。但后来我想打电话给任何其他的程序,我总是得到错误:
System.Data.SqlClient.SqlException (0x80131904): New transaction is not allowed because there are other threads running in the session.
我的DbContext被绑定,如:
kernel.Bind<MyDbContext>().ToSelf().InRequestScope();
问题出在哪里?为什么在foreach循环之后我总是得到这个错误?有没有交易限制?在我的订单过程中,我不使用交易,只有插入。
我会很感激您的帮助。