实体框架存储过程返回数据

时间:2014-10-09 13:47:34

标签: c# entity-framework stored-procedures

我有一个存储过程,它对给定的参数执行一些操作并返回一组数据。我不需要返回的数据,因此我的代码不会尝试读取数据。但是,在进行调用之后,对上下文的任何后续操作都会引发错误

  

不允许使用新事务,因为会话中还有其他线程在运行。

我可以通过将返回的枚举器转换为列表来解决这个问题,但是,有没有办法忽略存储过程返回的数据并释放上下文以供进一步使用?

存储过程用于多个应用程序,更新/更改它不是一个选项。我正在使用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

0 个答案:

没有答案