对象与实体框架- SqlException
本文关键字:SqlException 框架 实体 对象 | 更新日期: 2023-09-27 18:14:50
在我的应用程序中,我使用实体框架的存储过程。我的问题代码如下:
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。0x80131904):不允许新事务,因为有其他线程在会话中运行。
我的DbContext像这样绑定:
kernel.Bind<MyDbContext>().ToSelf().InRequestScope();
问题在哪里?为什么在foreach循环之后,我总是得到这个错误?有交易限额吗?在我的订单过程中,我不使用事务,只有插入。
非常感谢您的帮助。
你得到这个异常是因为你枚举了一个IEnumerable。IEnumerable在使用枚举器时执行查询,因此不能修改对象。你需要得到完整的执行列表,并使用它。您必须将IEnumerable转换为IList。使用ToList()函数将其转换为illist。