LINQ到SQL:存储过程不能里面查询中使用(linq-to-sql: Stored procedu

2019-10-20 03:21发布

这对失败VS2010 RC LINQ到SQL与InvalidOperationException异常“存储过程不能里面查询中使用。”:

var foo = (from a in aTable 
    from b in this.SomeStoredProcedure()
    where a.Id == b.Id
    select b.Id);

SomeStoredProcedure是它返回一个表中的SQL过程。 “加入”也出现失败。 任何想法,为什么?

Answer 1:

因为你不能在SELECT语句中调用存储过程。

你的命令会在TSQL这样的事情...但这是无效的。

select b.Id
    from aTable a
    inner join (exec SomeStoredProcedure) b on a.Id = b.Id

LINQ的语句会,如果你使用的是UDF,而不是存储过程的工作。 或者,你可以做加盟之前执行存储过程。

var foo = (from a in aTable 
    from b in this.SomeStoredProcedure().ToList()
    where a.Id == b.Id
    select b.Id);


文章来源: linq-to-sql: Stored procedures cannot be used inside queries