我有一个存储过程,它对给定的参数执行一些操作并返回一组数据。我不需要返回的数据,因此我的代码不会尝试读取数据。但是,在进行调用之后,对上下文的任何后续操作都会引发错误
不允许使用新事务,因为会话中还有其他线程在运行。
我可以通过将返回的枚举器转换为列表来解决这个问题,但是,有没有办法忽略存储过程返回的数据并释放上下文以供进一步使用?
存储过程用于多个应用程序,更新/更改它不是一个选项。我正在使用Entity Framework 5和数据库第一种方法。
为了澄清,没有循环,工作代码和非工作代码之间的唯一区别是添加到存储过程调用的.ToList()
。
代码类似于
var SomeEntityVal = Context.SomeEntity.FirstOrDefault(p=>p.Id == 1);
Context.SomeSPWithReturnType("Foo", SomeEntityVal.Id);
SomeEntity.SomeProperty = "OtherVal";
Context.SaveChanges(); // Exception raised
VS
var SomeEntityVal = Context.SomeEntity.FirstOrDefault(p=>p.Id == 1);
Context.SomeSPWithReturnType("Foo", SomeEntityVal.Id).ToList(); // Note .ToList()
SomeEntity.SomeProperty = "OtherVal";
Context.SaveChanges(); // Changed saved successfully